指令链接属性无效。

15 浏览
0 Comments

指令链接属性无效。

在HTML中,我使用以下代码调用指令:然后我的指令会查找内部内容:

function link(scope, element, attrs) {
    console.log('attrs: ' + attrs.size);
    scope.pagCount = attrs.count;
    scope.pagPage = attrs.page;
}
return {
    restrict: 'A',
    transclude: true,
    scope: {
        count: '@',
        size: '@',
        page: '@'
    },
    templateUrl: 'partials/godata/pagination.html',
    link: link
};

在partials/godata/pagination.html中,我可以访问这些变量(count,size和page)。在partial中,我只能访问这三个变量,没有其他变量。但是在函数link中,如果我尝试通过attrs来访问这些变量,它们是空的。出了什么问题?我该怎么办?\n更新:\n\"console并且使用scope: false,scope变量是未定义的。为什么在函数link中的attrs.$observe(\'page\', function(val) { console.log(\'$observe: \' + val); });会有两个输出,一个有值,一个没有值?\n再次更新:\n

function link(scope, element, attrs) {
    console.log('scope: ' + scope.size);
    console.log('scope: ' + scope);
    console.log('attrs: ' + attrs.size);
    console.log('attrs: ' + attrs);
    attrs.$observe('size', function(size) {
        console.log('$observe: ' + size);
        if(size) {
            scope.pagSize = size;
        }
    });
    console.log('after observe; pagSize: ' + scope.pagSize);
}

...给我带来:\n\"console但是scope.pagSize在浏览器中具有值。如果我无法访问它们,我该如何在我的指令中使用这些属性?

0
0 Comments

directive link attrs don't work这个问题的出现原因是当使用隔离作用域(isolated scope)时,使用attrs来访问属性会出现问题。解决方法是可以使用scope.pagescope.count来访问属性,或者使用attrs.$observe('page', function(val) { console.log(val) })来获取插值后的属性值。在链接函数中使用$observe()方法可以获取插值后的值。

0
0 Comments

directive link attrs don't work这个问题的出现原因是指令中的属性与作用域绑定有关。在指令中,可以使用scope.pagescope.count等方式访问这些属性。

解决这个问题的方法如下:

0