Angular JS наблюдать за атрибутом директивы
Как angular js смотреть атрибуты в пользовательской директиве, чтобы принимать значения angular для привязки
Вот что я до сих пор:
<tile title="Sleep Duration" data-value="{{sleepHistory.averageSleepTime}}"/>
app.directive('tile', [function() {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var title = attrs.title;
attrs.$observe('dataValue', function(val) {
var data = val;
console.log(data);
var dom =
"<div>" +
"<p>" + title + "</p>" +
"<p>" + data + "</p>" +
"</div";
$(element).append($(dom.trim()));
});
}
};
}]);
но наблюдаемое значение возвращается как undefined
Ответы
Ответ 1
Из http://docs.angularjs.org/api/ng.$compile.directive.Attributes:
все они рассматриваются как эквивалентные в Angular:
<span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
Итак, атрибут data-value
нормализуется на value
Итак, это то, что вы хотите:
attrs.$observe('value', function(val) {
Ответ 2
Просто посмотрите value
вместо dataValue
.
attrs.$observe('value', function (val) { ...
Ответ 3
Вы также можете использовать new attribute
для своей директивы вместо data-value
:
<tile title="Sleep Duration" your-new-attribute={{sleepHistory.averageSleepTime}}" />
attrs.$observe('yourNewAttribute', function (newValue, oldValue) {
if (newValue && newValue !== oldValue) {
// ...
}
});