AngularJs无法读取动态设置的属性

时间:2013-01-27 12:42:06

标签: javascript angularjs

我希望能够创建一个angularjs指令,最终从元素属性创建一个HighCharts图。我有一个指令工作但任何动态设置属性返回undefined。最后,我希望元素的所有属性都以params的形式发送到$ http请求。

我尝试使用$ observe方法,它似乎不起作用,我也希望属性是任何东西而不是预定义。

请参阅此小提琴:http://jsfiddle.net/F52SF/以及指令下面的代码:

myApp.directive('example', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            console.log('Log1:', attrs.exampleId);
            attrs.$observe('exampleAttr', function () {
                console.log('Log2:', attrs.exampleId);
            });

            var data = {};
            for(var i in attrs){
                var t = Object.prototype.toString.call( attrs[i] );
                if(t !== '[object Object]' && t != '[object Function]') data[i] = attrs[i];
            } 
            console.log(data);
        }
    }
});

1 个答案:

答案 0 :(得分:2)

在您的示例代码中,存在一些错误/改进:

  1. 您正在混合exampleAttr和exampleId
  2. 更好地读取传递给$ observe函数回调的值:

    attrs.$observe('exampleAttr', function(newValue) {
        /* use newValue here instead of attrs.exampleAttr */
    });
    
  3. 这是工作小提琴:http://jsfiddle.net/F52SF/1/