it-swarm.com.de

Angular JS Beachten Sie das Direktive-Attribut

Wie kann ein Winkel js Attribute in einer benutzerdefinierten Direktive überwachen, um zu bindende Winkelwerte zu akzeptieren 

Folgendes habe ich bisher:

<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()));
            });
        }
    };
}]);

aber der beobachtete Wert kommt als undefiniert zurück

20
Horace Heaven

Von http://docs.angularjs.org/api/ng.$compile.directive.Attributes :

alle diese werden in Angular als gleichwertig behandelt: 

<span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">

Also normalisiert sich das Attribut data-value zu value

Also, das ist was du willst:

attrs.$observe('value', function(val) {
42
dnc253

Beobachten Sie einfach die value anstelle von dataValue.

attrs.$observe('value', function (val)  { ...
9
zsong

Sie können auch einen new attribute für Ihre Direktive anstelle von data-value verwenden:

<tile title="Sleep Duration"  your-new-attribute={{sleepHistory.averageSleepTime}}" />

attrs.$observe('yourNewAttribute', function (newValue, oldValue) {
    if (newValue && newValue !== oldValue) {
        // ...
    }
});
0
Hazlo8