在ng-repeat中使用指令和范围'@'的神秘力量。

19 浏览
0 Comments

在ng-repeat中使用指令和范围'@'的神秘力量。

如果您更喜欢在工作代码中查看问题,请从这里开始:http://jsbin.com/ayigub/2/edit

考虑以下几种编写简单指令的几乎等效方式:

app.directive("drinkShortcut", function() {
  return {
    scope: { flavor: '@'},
    template: '{{flavor}}'
  };
});
app.directive("drinkLonghand", function() {
  return {
    scope: {},
    template: '{{flavor}}',
    link: function(scope, element, attrs) {
      scope.flavor = attrs.flavor;
    }
  };
});

当单独使用时,这两个指令的工作和行为是相同的:

  
  

然而,当在ng-repeat中使用时,只有简化版本可行:

  
  

我的问题是:

  1. 为什么详细版本在ng-repeat中不起作用?
  2. 如何使详细版本在ng-repeat中起作用?
0