Я пытаюсь использовать $parse
выражение атрибута директивы в ng-repeat. Вот простой HTML:
<body ng-app="hello" ng-controller="control">
<div ng-repeat="a in array" my-dir="a.one == 1"></div>
</body>
и Угловая директива:
angular.module('hello', [])
.controller('control', function($scope){
$scope.array = [{
one: 1,
two: 2
},
{
one: 3,
two: 4
}];
})
.directive('myDir', function($parse){
return {
restrict: 'A',
link: function(scope, elem, attrs){
var hash = $parse(attrs.myDiv);
// I would like a way of evaluating this expression
// without having to use things like my-dir="array[$index].item == 1"
// just like one would do with other angular directives.
console.log(hash(scope)); // This is undefined, because a.one can not be found in scope.
},
};
});
Проблема с этим заключается в том, что $parse
использует scope
для a.one
свойства a.one
и, очевидно, этого не существует.
Я мог бы сделать my-dir="array[$index].one == 1"
но он не интуитивно понятен для пользователей директивы (им нужно будет рассмотреть область действия, в которой они вызывают директиву).
Существует опечатка - myDiv
вместо myDir
. http://plnkr.co/edit/rwoUXjxmvmdTp3OIE4Yo?p=preview