我正在创建指令,根据进入的类型动态生成标记。
但在这种情况下,我无法让feature
工作。
1)HTML:ng-model
重复ng-repeat
并绑定custom-tag
(自定义标记可以是data
或input
)
select
这是我的指令代码:
这个自定义指令创建了一个<div ng-repeat="item in head">
<div ng-repeat="(key, value) in data" ng-if="key === item.name">
<label>{{item.title}}</label>
<custom-tag type="item.type" ng-model="data[key]"></custom-tag>
</div>
</div>
{{data}} // {"name":"0","number":"0","contact":"0","type":"0","id":8}
,例如它是custom tag
,然后我添加了一个属性'input'
但是在哪里获得对我找不到的模型的引用。我尝试了很多不同的方法。
最后,我将ng-model
替换为新创建的custom tag
代码
input
我应该在ng-model值中传递什么才能使其有效?
它的工作没有隔离范围,但我需要它来接收元素的类型。
对不起我的英语和困难的解释。
答案 0 :(得分:1)
您可以将ngModel作为附加绑定传递:
.directive('customTag', function($compile, $parse) {
return {
scope: {
model: '=ngModel',
type: "@"
},
require: 'ngModel',
restrict: 'E',
replace: true,
link: function($scope, el, attr, ngModel) {
var input = angular.element('<input type="text" ng-model="model" />');
var linkFn = $compile(input);
var content = linkFn($scope);
el.replaceWith(content);
}
}
});
并确保插入类型,您不需要双向绑定:
<custom-tag type="{{item.type}}" ng-model="data[key]"></custom-tag>