AngularJS:指令ng-repeat在link函数中不起作用
AngularJS : directive ng-repeat doesn't work in link function
我试图创建一个指令,最终将是一个"自动完成"和显示表单元素下的数据。
我在插入的html中获得ng-repeat以显示它从attr获得的信息数组时遇到了问题。
在指令中,我正在监视attr等待数据被填充,一旦它被填充,我将其设置为指令中的变量,并尝试在ul html中重复数据。即使在指令中填充了变量,也不会显示任何内容。
知道为什么吗?我试过做很多事情,我敢肯定这是一个父/子范围的问题,只是不确定我需要改变什么?我试图保持指令范围隔离,所以我可以多次重用这个指令。
砰砰作响:http://plnkr.co/edit/XoXli0OyRP6xObsDImOe
//Directive
function autoComplete($parse, $compile, $timeout) {
var directive = {
restrict: 'EA',
// scope: true,
require: '?ngModel',
link: link
};
return directive;
function link(scope, elem, attr, ngModel) {
var cdata = [];
var modelGet = $parse(attr['ngModel']);
var modelSet = modelGet.assign;
scope.$watch(function() {
return elem.attr('data');
}, function(newVal) {
cdata = newVal;
console.log(cdata);
});
$timeout(function(){
//var ewidth = elem.outerWidth(); //Doesn't work in Plunker for some reason
var ewidth = '100%';
var html = '<div><ul class="list-group" style="position: absolute; width: '+ewidth+'px;"><li class="list-group-item" ng-repeat="codes in cdata track by $index">{{codes.code}}</li></ul></div>';
elem.after($compile(html)(scope));
scope.$apply();
console.log("DIV has been added");
});
scope.$watch(function() {
return modelGet(scope);
}, function() {
var string = modelGet(scope);
if (string != undefined && string.length >= 6) {
console.log("Will do something later");
}
});
}
}
好吧,我在这段代码中发现了一个错误组合,使它不能工作。见下文:
- 在你的
link
中,cdata
不在作用域上,所以不能被HTML 访问 -
data
包含一个数组而不是字符串,所以你不能插入data="{{stuff}}"
- 相反,你需要
$watch
为attr.data
- 由于您向作用域添加了信息,它应该是一个使用
scope: true
的新信息。
这可能是它,见fixed plunkr: http://plnkr.co/edit/K9D9h8SYaqNw3uKui1xT?p=preview
相关文章:
- Ember Data DS.Model's set函数不起作用
- 为什么我的JavaScript堆栈排序函数不起作用
- Javascript onchange()函数不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 从PHP调用JS函数不起作用
- jQuery validate函数不起作用
- JS-窗口宽度函数不起作用
- javascript函数,该函数不起作用,但不会显示任何错误
- 为什么这个排序函数不起作用
- 为什么这个反向函数不起作用
- Javascript parseInt 函数不起作用
- 我的函数不起作用,Ajax调用,JQuery,调用外部?我不知道
- 主干构造函数不起作用
- Javascript:this.value 函数不起作用
- Mocha 的 beforeEach() 和 done() 函数不起作用
- 在jQuery中,我的函数不起作用
- jquery-ui-rails的draggable和dropable函数不起作用
- 数学函数不起作用
- Javascript-创建打印到HTML的函数不起作用
- 我上传了客户's服务器一个js函数不起作用