我创建了一个创建两个按钮的自定义指令。每个按钮使用ng-click调用指令内的方法来更改模型的值,然后调用控制器来更新数据库中的值。通过这种方式,在更新模型之前调用控制器,因为它始终使用旧值。 如果我在指令$ scope内部应用。$ apply()一切正常,除非在consolle中触发错误,因为还有$ apply()执行。如何正确等待模型更新才能调用控制器?
该指令用于迭代数组的ng-repeat。
我使用的逻辑是:
如果我尝试将编辑的值发送到控制器,当然它可以工作,但我会使用模型而不是每个值。为什么在控制器执行$ http调用之前更新模型?
这是指令:
app.directive('ngSwitch', function () {
return {
scope: {
model: '=ngSwitch',
index: '=index', //Index in the array
switchValue1: '@switchValue1',
switchDesc1: '@switchDesc1',
switchValue2: '@switchValue2',
switchDesc2: '@switchDesc2',
callback: '=callback'
},
link: function (scope, elm, attr) {
scope.saving = false;
scope.setModel = function (value) {
scope.model = value == 1 ? scope.switchValue1 : scope.switchValue2;
scope.saving = true;
scope.$apply();//IF I DON'T USE $apply, IT DOESN'T WORK
scope.callback(scope.index)
}
},
templateUrl: 'components/direttive/ngSwitch.html'
};
});