Если вы предпочитаете видеть вопрос в рабочем коде, начинайте здесь: http://jsbin.com/ayigub/2/edit
Рассмотрим эти почти эквивалентные способы написания простого указателя:
app.directive("drinkShortcut", function() {
return {
scope: { flavor: '@'},
template: '<div>{{flavor}}</div>'
};
});
app.directive("drinkLonghand", function() {
return {
scope: {},
template: '<div>{{flavor}}</div>',
link: function(scope, element, attrs) {
scope.flavor = attrs.flavor;
}
};
});
При использовании сами по себе две директивы работают и ведут себя одинаково:
<!-- This works -->
<div drink-shortcut flavor="blueberry"></div>
<hr/>
<!-- This works -->
<div drink-longhand flavor="strawberry"></div>
<hr/>
Однако при использовании в ng-repeat работает только версия ярлыка:
<!-- Using the shortcut inside a repeat also works -->
<div ng-repeat="flav in ['cherry', 'grape']">
<div drink-shortcut flavor="{{flav}}"></div>
</div>
<hr/>
<!-- HOWEVER: using the longhand inside a repeat DOESN'T WORK -->
<div ng-repeat="flav in ['cherry', 'grape']">
<div drink-longhand flavor="{{flav}}"></div>
</div>
Мои вопросы:
- Почему версия longhand не работает внутри ng-repeat?
- Как вы могли сделать работу с длинной версией внутри ng-repeat?