我正在尝试创建一个指令,该指令将根据属性值将 ngModel 属性添加到标记中。例如:
angular.module('myModule').
directive('myDirective', function() {
return {
link: function(scope, elem, attrs) {
var modelName = 'myPrefix.' + attrs.name;
attrs.$set('ngModel', modelName);
}
};
});
这样这个html:
<input name="foo" my-directive></input>
被编译成
<input name="foo" ng-model="myPrefix.foo" my-directive></input>
它采用输入的名称,附加前缀,并将 ngModel 属性设置为该值。
当我尝试在链接函数中执行此操作时,似乎input
没有向 formController 注册,因此form.foo
返回未定义。
是否有可能完成我想要做的事情?
编辑:
似乎该ngModel
属性是在 HTML 上设置的,但它没有在表单中注册,或者 ngModelController 没有被实例化。如果我查看ngModel
范围内的值,当我修改输入时它不会改变。