Daily Archives: 28.02.2014
AngularJS: особенности пробрасывания объектов в директиву
Есть у меня директива такого плана:
1 |
<div my-selector initial-value="{a: 1}"></div> |
Хотелось бы отслеживать изменения в директиве. Вот так она выглядит:
1 2 3 4 5 6 7 8 9 10 11 |
directive('fbFieldObjectSelector', ['$rootScope', function ($rootScope) { return { restrict: 'A', scope: { initialValue: '=' }, template: 'div', link: function link($scope, $el, attrs) { ... |
Самый простой способ:
1 2 3 4 5 |
$scope.$watch('initialValue', function (initialValue) { // @debug console.log(initialValue); $scope.selectProduct(initialValue); }); |
он не работает, ошибка Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! Второй способ:
1 2 3 4 5 |
$scope.$watch('initialValue', function (initialValue) { // @debug console.log(initialValue); $scope.selectProduct(initialValue); }, true); |
и третий способ:
1 2 3 4 5 |
$scope.$watchCollection('initialValue', function (initialValue) { // @debug console.log(initialValue); $scope.selectProduct(initialValue); }); |
работают, но тоже выдают ошибку: Error: [$compile:nonassign] Expression ‘{a: 1}’ used with directive ‘fbFieldObjectSelector’ is …