Del*_*emm 9 angularjs angularjs-directive
我正在尝试在指令中添加带有ng-model的输入元素.
我的指令的链接功能:
link: function (scope, element, attrs) {
var elem_0 = angular.element(element.children()[0]);
for (var i in scope.animals[0]) {
elem_0.append(angular.element('<span>' + scope.animals[0][i].id + '</span>'));
//this part doesn't work
var a_input = angular.element('<input type="text">');
a_input.attr('ng-model', 'animals[0][' + i + '].name');
//end
elem_0.append(a_input);
}
Run Code Online (Sandbox Code Playgroud)
看来我最后需要调用$ compile(),但不知道怎么做.
Aru*_*hny 12
尝试
var a_input = angular.element($compile('<input type="text" ng-model="animals[0][' + i + '].name"/>')($scope))
elem_0.append(a_input);
Run Code Online (Sandbox Code Playgroud)
当您可以使用嵌套ng-repeat
在指令模板中并让angular执行数组循环时,您通过手动循环数组使指令变得比必要更复杂:
angular.module("myApp", [])
.directive("myDirective", function () {
return {
restrict: 'EA',
replace: true,
scope: {
animals: '=animals'
},
template: '<div ng-repeat="group in animals">'+
'<span ng-repeat="animal in group">{{animal.id}}'+
'<input type="text" ng-model="animal.name"/>'+
'</span><hr>'+
'</div>'
}
});
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/Ajsy7/2/
归档时间: |
|
查看次数: |
9432 次 |
最近记录: |