0
我創建了一組選擇框,它們在我的視圖中使用帶有選擇標記的指令綁定到值列表,並在div上。它們被填充一些值,但是在渲染完成後,我想根據其中已存儲的值設置一個值。AngularJS在視圖加載前創建一個範圍變量
我想通過設置ng-init
中的模型值,使用函數I調用控制器中的函數來初始化其中存儲的值的數組。
但是,當選擇框被渲染並且調用ng-init
時,該數組始終未定義。
如何確保在選擇框上調用ng-init
時始終設置變量?
angular.module('myapp')
.controller('aclCtrl', function()
{
$scope.retrieveSetValues(id)
{
//.then promise to GET stored values, defined in a factory, sets variable that is accessed in initializeSelects()
}
$scope.retrieveSetValues($scope.myID);
}
查看:
選擇指令:
.directive("selector", [
function() {
return {
controller: function() {
this.myValues= ['a', 'b', 'c'];
},
require: 'ngModel',
controllerAs: 'ctrl',
scope: {
'ngModel': '='
},
template: '<select ng-model="innerModel" ng-change="updateInnerModel()" ng-options="v for v in ctrl.myValues"> </select>',
link: function(scope, elem, attrs, ngModelController) {
scope.innerModel = scope.ngModel;
scope.updateInnerModel = function() {
ngModelController.$setViewValue(scope.innerModel);
};
}
};
}
])
的問題是,我沒有看到我在通話範圍設置爲retrieveSetValues()
變量在訪問ng-init initializeSelects()
時調用。
我試過兩次,在控制器中調用它,並在我嘗試訪問initializeSelects()
中保存的值之前調用它,從ng-init
。
我是新來的角,我對整個消化週期如何工作的理解是新手級別。 :(
任何幫助表示讚賞!
感謝法比奧,我實際上正在創建一組選擇,我需要在一個循環中設置它們的值,無論是在ng-init或其他。 (編輯視圖代碼供您參考) –