Angularjs 为什么不在指令的链接函数中编译?
这是我的密码Angularjs 为什么不在指令的链接函数中编译?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,这是我的密码 // index.html <my-slider items="items"></my-slider> // slider.tpl.html <ul> <li ng-repeat="item in items"> // items.length = 10 <my-thumb my-data="item"></my-thumb> </li> </ul> // sl
// index.html
<my-slider items="items"></my-slider>
// slider.tpl.html
<ul>
<li ng-repeat="item in items"> // items.length = 10
<my-thumb my-data="item"></my-thumb>
</li>
</ul>
// slider.directive.js
angular.module('app')
.directive('mySlider', function () {
return {
restrict: 'E',
templateUrl: 'slider.tpl.html',
scope: {
items: '='
},
link: function (scope, elem, attrs) {
console.log(scope.items); // print [{...},{...},{...}.....]
var elem.find('ul').css('width', _.sumBy(elem.find('li'), function (o) { $(o).width(); }));
// but
console.log(elem.find('li').size()); // print => 0 ???? why is 0?
}
};
});
为什么它是空的?您需要先让
ng重复
渲染
尝试使用$timeout
,使代码在下一个摘要之前不会运行
.directive('my-slider', function ($timeout) {
return {
//.....
link: function (scope, elem, attrs) {
$timeout(function(){
console.log(elem.children().length)
});
}
})
如果需要子元素来渲染。。。对或者,您可以使用子指令的
$last
属性将事件发送到父指令或触发父指令中的函数。如果要在ng中更改数据,请重复
,这可能更实用
.directive('my-slider', function ($timeout) {
return {
//.....
link: function (scope, elem, attrs) {
$timeout(function(){
console.log(elem.children().length)
});
}
})