AngularJS:为什么我不能将DOM属性值传递给指令

时间:2015-10-14 02:11:12

标签: angularjs angularjs-directive swipe

是因为我使用$swipe吗?

HTML

<div start_slide_at="459" slide-controller></div>

JS

myApp.directive('slideController', ['$swipe',
    function($swipe) {

        return {
            restrict: 'EA',
            scope: {
                start_slide_at: '='
            },
            link: function(scope, element, attrs) {
                console.log(scope.start_slide_at);
            }
        }
    }
]);

现在返回undefined:/

2 个答案:

答案 0 :(得分:2)

你可以使用scope.startSlideAt变量获取值。 &#34; _&#34;或&#34; - &#34;在direcitve中使用双重绑定时,在angularjs的情况下,DOM属性被转换为camel大小写。所以这是你修改过的链接函数和范围属性。

     scope: {
                startSlideAt: '='
            },

    link: function(scope, element, attrs) {
                console.log(scope.startSlideAt);
              }

希望这能解决您的问题。

答案 1 :(得分:2)

=表示双向绑定。

它需要范围变量而不是值

如果你想传递价值,那就制作范围

scope: {
                startSlideAt: '@'
            },

指令转换 - ,_ camecase

  

指令有诸如ngBind之类的骆驼名称。该指令可以   通过将驼峰案例名称翻译成蛇案例来调用   特殊字符:, - 或_

所以在链接

console.log(scope.startSlideAt);