小编典典

AngularJS 自定义指令两种方式绑定

all

如果我有一个没有模板的 AngularJS 指令,并且我希望它在当前范围内设置一个属性,那么最好的方法是什么?

例如,计算按钮点击次数的指令:

<button twoway="counter">Click Me</button>
<p>Click Count: {{ counter }}</p>

使用将点击计数分配给双向属性表达式的指令:

.directive('twoway', [
'$parse',
  function($parse) {
    return {
      scope: false,
      link: function(scope, elem, attrs) {
        elem.on('click', function() {
          var current = scope.$eval(attrs.twoway) || 0;
          $parse(attrs.twoway).assign(scope, ++current);
          scope.$apply();
        });
      }
    };
  }
])

有一个更好的方法吗?从我读过的内容来看,一个孤立的范围会过大,但我需要一个子范围吗?除了使用$parse. 我只是觉得我让这件事变得太难了。


阅读 73

收藏
2022-05-16

共1个答案

小编典典

为什么隔离范围过大?它对这种事情非常有用:

  scope: {
     "twoway": "=" // two way binding
  },

这是这个问题的一个非常惯用的角度解决方案,所以这就是我坚持的。

2022-05-16