我有一個角度的應用程序設置如下。 Ng-repeat包含li元素,每個元素有2個輸入(好於2個,但是對於這個演示我有2個)。
指令設置控制器。
HTML
<li ng-repeat="lw in lw_list" my-lw ng-model="lw" >
<input my-cell ng-init="init(lane , $index , 'name')" ng-class="'lib_name inline_div'" type='text' value="{{ lw.library.name }}" >
<input my-cell ng-init="init(lane , $index , 'volume') "ng-class="'number_field'" type="number" ng-model='volume' />
</li>
的javascript
angular.module('Demo').directive("myCell", function(CellStore){
return {
controller : 'CellCtrl' ,
};
}) ;
angular.module('Demo').controller('CellCtrl' , function($scope , CellStore){
$scope.init = function(lane, row, column){
$scope.row = row ;
$scope.column = column ;
console.log("init" , $scope.$parent);
CellStore.addCell( lane.lane, row, column , $viewValue) ;
} ;
}) ;
這樣的想法是所創建的每個輸入時,它將調用init函數,其將存儲在嵌套散列的輸入值(對於稍後檢索)。但是我不知道如何從控制器中訪問$ viewValue變量(輸入包含的值)。
你爲什麼不把'lw'傳入init函數? – BoxerBucks
這是做到這一點的一種方式,但我的應用程序有一些輸入元素(我只在這裏放置兩個來簡化示例)。 如果我可以訪問輸入元素的模型,它會使代碼更通用和可重用。 –
如何報廢控制器並在指令的鏈接功能中執行init?您將有權訪問當前的所有範圍。將您的數據作爲屬性傳遞給指令。 – BoxerBucks