У меня есть форма на основе twitter bootstrap, каждое поле имеет свою конфигурацию
// controller (the template shows this in ng-repeat
$scope.fields = [{name:"f1", label:"Field 1", with_button: false},
{name:"f2", label:"Field 2", with_button: true}]
Я пытаюсь сделать «условную директиву», которая настраивает шаблон в соответствии с «field.with_button».
// Without button
<div class="controls">
<input type="text" id="i_{{field.name}}">
</div>
// With button
<div class="controls">
<div class="input-append">
<input type="text" id="i_{{field.name}}">
<span class="add-on">bt</span>
</div>
</div>
Я много искал и не нашел решения, я пытался создать только один div и поместить содержимое внутрь с помощью функции компилятора, но он не анализировался, и если я вызываю $apply
, он вылетает.
Как я мог сделать эту директиву?
неправильно Моя последняя попытка:
angular.module('mymodule',[]).directive('ssField', function() {
return {
transclude:false,
scope: {
field: '='
},
restrict: 'E',
replace:true,
template: '<div class="controls">{{innerContent}}</div>',
controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {
$scope.$eval('$scope.innerContent = \'<input type="text" id="input_{{field.name}}" placeholder="{{field.name}}" class="input-xlarge">\'');
}]
};
});
//<ss-field field="{{field}}"></ss-field>