Изменения в моей переменной области foo
обновляются в html. Когда это значение изменяется внутри области действия контроллера директивы, оно не обновляется в html.Угловые - изменения в области действия контроллера не отражены в поле зрения
Что нужно сделать, чтобы обновить его?
У меня есть простой example:
app.js
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.foo = 99;
$scope.changeValue = function() {
$scope.foo = $scope.foo + 1;
}
});
app.directive('d1', function(){
return {
restrict: 'E',
scope: {
theFoo: '='
},
templateUrl: 'd1.html',
controller: 'd1Ctrl',
}
});
app.controller('d1Ctrl', function($scope) {
$scope.test = $scope.theFoo;
});
d1.html
<div>
<p>The value of foo is '{{theFoo}}'.</p>
<p>The value of test is '{{test}}'.</p>
</div>
внутри index.html
<d1 the-foo='foo'>
</d1>
<button ng-click='changeValue()'>change value</button>
Таким образом, в целом, {{theFoo}}
обновляется, но {{test}}
нет. Зачем?
Это одна из проблем, которые у меня есть с угловыми.Хотя использование * controller-as *, похоже, позволяет избежать большинства из этих головных болей, потому что он рассматривается как не-примитивный, мне все еще не нравится, как нам нужно переосмыслить наши пути обновления примитивных значений. – jusopi
@jusopi вся проблема исчезает, если вы следуете лучшие практики и использование объектов вместо примитивов. Я редко использую $ watch в своем коде и удостоверяюсь, что я использую свойства объекта, а не примитивы – charlietfl
извините, но сказать, что вся проблема исчезает, неверна. Если он не изменит внутреннюю работу директивы, чтобы вытащить тестовое значение из не-примитивного связанного значения, 'test' все еще не обновляется. http://plnkr.co/edit/bRrQ9z4oBYrdBCLwbOjP?p=preview – jusopi