Оценка выражения с помощью $ parse в директиве внутри ng-repeat в Angular 1.4.5

0

Я пытаюсь использовать $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" но он не интуитивно понятен для пользователей директивы (им нужно будет рассмотреть область действия, в которой они вызывают директиву).

  • 0
    Таким образом, вы можете запросить родительскую область с помощью require:? NgModel.
Теги:
parsing
angularjs-ng-repeat
directive

1 ответ

0

Существует опечатка - myDiv вместо myDir. http://plnkr.co/edit/rwoUXjxmvmdTp3OIE4Yo?p=preview

  • 0
    Черт! вы правы. чертовски опечатка .... rofl

Ещё вопросы

Сообщество Overcoder
Наверх
Меню