Dav*_*lch 1 javascript twitter-bootstrap angularjs angularjs-directive
我有一个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>
Run Code Online (Sandbox Code Playgroud)
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);
}
};
});
Run Code Online (Sandbox Code Playgroud)
如上所述,只显示"Doug"输入.
kon*_*ong 11
您不能为指令使用"自闭"标签.如果您按如下方式更改标记,则应该有效:
<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>
Run Code Online (Sandbox Code Playgroud)
基本上,HTML解析的方式<form-input />是没有关闭标记的开放标记,因此您的第一个指令已启动,但从未完成,这就是为什么第一个指示似乎有效,但第二个指令没有.
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |