相关疑难解决方法(0)

AngularJS指令双向数据绑定在观察布尔值时不起作用

我有一个双向数据绑定,不会改变发送到指令的变量的值.

我的指令监视触发器并将关注点放在关联元素上(基于此处的代码):

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实际上看起来像这样: …

javascript angularjs angularjs-directive

17
推荐指数
2
解决办法
2万
查看次数