属性値に基づいて 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
と、フォームコントローラーに登録されていないように見えるため、form.foo
未定義が返されます。
私がやろうとしていることを達成することは可能ですか?
編集:
ngModel
HTMLで属性が設定されているようですが、フォームに登録されていないか、ngModelControllerがインスタンス化されていません。スコープ内の値を見るとngModel
、入力を変更しても変化しません。