我有一个双向数据绑定,不会改变发送到指令的变量的值.
我的指令监视触发器并将关注点放在关联元素上(基于此处的代码):
app.directive('focusMe', function ($timeout) {
return {
scope: {
trigger: '=focusMe'
},
link: function (scope, element, attrs) {
scope.$watch('trigger', function(value) {
console.log("directive value: " + value);
console.log("directive start: " + scope.trigger);
if (value === true) {
$timeout(function () {
element[0].focus();
scope.trigger = false;
console.log("directive end: " + scope.trigger);
});
}
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
在HTML中我称之为:
<input type="text" ng-model="item.value" focus-me="focusInput" />
Run Code Online (Sandbox Code Playgroud)
当我第一次触发它时,它可以工作 - 因为focusInput变量会切换它的值.但是focusInput在控制器范围内(指令外)不会切换回false指令完成时.
这种切换false应该在我打电话时发生scope.trigger = false,假设我明白应该发生什么.
缺少什么会导致双向绑定不将值推回到传递给指令的变量?
更新01:
为了发布问题,我删除了一小段代码.HTML实际上看起来像这样: …