【发布时间】:2016-02-07 13:27:46
【问题描述】:
在 html 中我调用我的指令:<div godata-pagination count="{{pagination.count}}" size="{{pagination.size}}" page="{{pagination.page}}"></div>
然后我的指令往里面看:
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)中,我可以访问这些变量(计数、大小和页面)。对于 100% 的部分 i 访问原始这三个变量,在此范围内没有其他变量。
但我会在函数链接中对这些变量做一些事情。 如果我尝试通过 attrs 访问函数链接中的这些变量,它们是空的:(
出了什么问题和/或我能做什么?
更新:
scope: false 范围变量未定义。
为什么在函数链接两个输出中带来attrs.$observe('page', function(val) { console.log('$observe: ' + val); }); 行...一个有值,一个没有值?
再次更新:
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);
}
...带给我:
但是scope.pagSize 在浏览器中有一个值。
如果我无法访问它们,我该如何在指令中使用这些属性?!
【问题讨论】:
-
尝试通过控制台记录所有 attr 对象,看看里面有什么。
-
有一个空对象
scope: [object Object]和attrs: [object Object]
标签: angularjs angularjs-directive