我希望通过元素的id更新其属性,并使元素对此更改做出反应。
我试图创建一个plunkr来反映我的情况,但似乎连ng-click也无法工作。
然而,我想要做的是调用一个函数,该函数执行以下操作:
我试图创建一个plunkr来反映我的情况,但似乎连ng-click也无法工作。
然而,我想要做的是调用一个函数,该函数执行以下操作:
var cell = angular.element(document.querySelector('#' + cellName));
cell.attr('card-id', id);
根据我可以直接读出的值,似乎这个操作是有效的。
接收元素看起来像这样:
deckbuilderApp.directive('card', function() {
return {
restrict: 'E',
replace: true,
templateUrl: 'tpl/deckCard.tpl.html',
scope: {
cardId: '=cardId'
},
link: function(scope, element, attrs) {
attrs.$observe('cardId', function(newId) {
console.log('observe cardId: new Value: ' + newId);
console.log('observe cardId: id: ' + scope.id + ' scope:' + scope);
});
scope.$watch('cardId', function(oldValue, newValue) {
console.log('$watch cardId: ' + oldValue + ' -> ' + newValue);
});
attrs.$observe(function() { return attrs.cardId }, function(newId) {
console.log('ssssobserve card-id: new Value: ' + newId);
console.log('sssssobserve card-id: id: ' + scope.id + ' scope:' + scope);
});
scope.$watch(function() { return attrs.cardId }, function(oldValue, newValue) {
console.log('sssssssssss$watch card-id: ' + oldValue + ' -> ' + newValue);
});
console.log('linked card directive');
}
}
});
当我通过ng-repeat设置值时,除了'ssssobserver'外,手表和观察器函数会在初始化时被调用。
对card-id属性的后续更改不会触发手表或观察器代码。
我需要做什么才能让它正常工作?