0

Im對AngularJS來說相當新穎,我試圖創建一個帶有「Draggables」的列表,您可以將它放入可排序的4個列表中。我得到這個與AngularUI-Sortable一起工作。AngularUI Bootstrap Modal。範圍問題

現在爲了下一部分,我正在嘗試編輯內容(更多選項和功能中的設置)。使用AngularUI-Bootstrap的模式。

我得到了這個工作,打開我想編輯的選定項目的內容。

正如你在Plunker中所看到的,我幾乎可以正常工作。只有我不知道的是我如何可以{{ item }}{{ widgetOption }}後我按下保存按鈕。

http://embed.plnkr.co/TTNccRuToObZuSmwYlTG/preview

回答

0

我的方法是在你的模態控制器原始對象的引用。因此,假設傳入的對象是原始對象,並且只有在保存表單時才應該修改它。爲了使其工作起來,儘可能少地改變代碼,我就想出了這個搗蛋者。

http://plnkr.co/edit/eSbEZZajsNfmVv3vmTdc?p=info

var modalInstance = $modal.open({ 
    templateUrl: 'modal.html', 
    controller: ModalInstanceCtrl, 
    resolve: { 
     widgetOptionsLocal: function() { 
      return widgetOptions; 
     } 
    } 
}); 


var ModalInstanceCtrl = function ($scope, $modalInstance, widgetOptionsLocal) { 
    var widgetOptionsOriginal = widgetOptionsLocal; 
    $scope.widgetOptions = angular.copy(widgetOptionsLocal); 

    $scope.ok = function() { 
     widgetOptionsOriginal.content = $scope.widgetOptions.content; 
     $modalInstance.close($scope.widgetOptions); 
    }; 

    $scope.cancel = function() { 
     $modalInstance.dismiss('cancel'); 
    }; 
}; 
+0

感謝您的例子真的很有幫助!我有一個小問題,現在你做(做一個'.content') '$ scope.ok = function(){ widgetOptionsOriginal.content = $ scope.widgetOptions.content; $ modalInstance.close($ scope.widgetOptions); };' 因此,如果我添加更多的選項,我需要手動添加所有選項的模式?由於底部代碼不起作用 '$ scope.ok = function(){ widgetOptionsOriginal = $ scope.widgetOptions; $ modalInstance.close($ scope.widgetOptions); };' – TheBoef

+0

隨着它現在編碼的方式,是的。您必須保留對原始對象的引用,您不能替換它,否則將失去與項目列表的關聯。沒有重寫大塊代碼的兩種選擇:a)使用angular.extend將新對象的屬性應用於原始b)更改代碼以傳遞整個列表和索引,然後可以替換與新的一個列表。 –

+0

乾杯去了angular.extend,不知道那個!謝謝您的幫助! – TheBoef