У меня проблема с привязкой директивы.В тот момент, когда ng-change
срабатывает в обработчике событий, у меня правильное значение в ng-модели prop, но следующая строка - это вызов метода, связанный с контроллером, а свойство обработчика контроллера, которое связано с директивой, имеет предыдущее значение - оно обновляет одномомент спустя.Я предполагаю, что это из-за шагов выполнения дайджест-цикла.Есть ли способ иметь одинаковое значение для директивы и контроллера в данный момент? Пример Plunker .Одним из решений является завершение кода обработчика событий директивы в setTimeout
.Есть ли другие, более «угловатые» способы справиться с этим правильно?
Мой html:
<text-box textvalue="vm.userInput" loadvalue="vm.onLoadValue()"></text-box>
контроллер:
angular.module("app").controller("mainController", function(){
var that = this;
that.onLoadValue = function(){
console.log(this.userInput);
}
});
директива:
angular.module("app").directive("textBox", function(){
return {
restriction: "E",
template: `<input ng-model="textvalue", ng-change="vm.onChange()"/>`,
scope: {
textvalue: "=",
loadvalue: "&"
},
controllerAs: "vm",
controller: function($scope){
var that = this;
that.onChange = function(){
console.log($scope.textvalue);
$scope.loadvalue();
}
}
}
})