1

我希望能够创建一个 angularjs 指令,最终从元素属性创建一个 HighCharts 图。我有一个指令工作,但任何动态设置的属性都返回未定义。最后,我希望将元素上的所有属性作为参数发送到 $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);
        }
    }
});
4

1 回答 1

2

在您的示例代码中有几个错误/改进:

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

    attrs.$observe('exampleAttr', function(newValue) {
        /* use newValue here instead of attrs.exampleAttr */
    });
    

这是工作小提琴:http: //jsfiddle.net/F52SF/1/

于 2013-01-27T14:55:13.343 回答