Angular.js自定义指令未多次显示
Angular.js custom directive not showing up multiple times
我正在编写一个Angular.js指令,以减少Twitter Bootstrap的一些样板。到目前为止,我已经创建了一个form-input
元素,它按预期显示。但是,如果我将这些指令中的许多放在同一个父元素中,那么实际上只有第一个被添加并显示出来。
有人能解释一下为什么吗?
我的标记:
<form class="form-horizontal" role="form">
<form-input type="text" target="name1" label="Name1" placeholder="Doug" ng-model="name1"/>
<form-input type="text" target="name2" label="Name2" placeholder="Frank" ng-model="name2"/>
</form>
app.js
var app = angular.module('app', ['ui.router']);
app.controller('FormInputController', ['$scope', '$attrs', function($scope, $attrs){
console.log("Controller");
}]);
app.directive('formInput', function(){
return {
restrict: 'E',
controller: 'FormInputController',
transclude: true,
replace: true,
require: ['^ngModel'],
template: '<div class="form-group">'
+ '<label for="{{id}}" class="col-sm-2 control-label">{{label}}</label>'
+ '<div class="col-sm-10">'
+ '<input type="{{type}}" class="form-control" id="{{id}}" placeholder="{{placeholder}}">'
+ '</div>'
+ '</div>',
scope: {
id: '@',
label: '@',
placeholder: '@',
type: "@"
},
link: function(scope, element, attrs, ctrls) {
console.log(arguments);
}
};
});
如上所述,只显示"Doug"输入。
您不能在指令中使用"自关闭"标记。如果您按照以下方式更改标记,它应该可以工作:
<form class="form-horizontal" role="form">
<form-input type="text" target="name1" label="Name1" placeholder="Doug" ng-model="name1"></form-input>
<form-input type="text" target="name2" label="Name2" placeholder="Frank" ng-model="name2"></form-input>
</form>
基本上,HTML解析<form-input />
的方式是作为一个没有关闭标记的打开标记,所以第一个指令启动了,但从未完成,这就是为什么第一个指令似乎有效,但第二个指令无效。
有关更多详细信息,请参见例如this和this。
相关文章:
- AngularJs|Don'在成功加载所有指令htmls之前,不显示页面
- 显示/隐藏有关模型更改的指令内容
- 指令未以角度显示
- 显示指令时调用指令方法
- 如何在html中以角度显示自定义指令的作用域
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- 如何在 AngularJS 中创建和显示多个自定义指令
- 指令中的数据未在ng重复中显示
- 角度指令未显示
- AngularJS指令模板不显示HTML
- AngularJS自定义指令ng显示/ng隐藏
- 日期-时间范围指令字段未显示任何值
- Angularjs-将指令中的值绑定到文档中的任意位置显示/隐藏
- Angular.js自定义指令未多次显示
- AngularJS指令未显示
- AngularJS指令未显示在模板上
- 如何在当前元素之外显示指令
- 如何在带角度传单的Marker Popup指令中显示指令
- ng显示指令更改相关作用域值后不更新