在我的自定义指令中,我声明了带有输入的新表单<div ng-form="inputForm"></div>
。
如何在链接功能中访问此表单? scope.inputForm
为undefined
:/
编辑:代码示例
.directive('ifInput', ['$system', function ($system) {
return {
restrict: "E",
replace: true,
scope: {},
link: function (scope, element, attrs) {
scope.temp = function () {
console.log(scope.inputForm);
}
},
templateUrl: "template/if-input-pola/index.html"
};
}])
.run(["$templateCache", function ($templateCache) {
$templateCache.put("template/if-input-pola/index.html",
"<div ng-form=\"inputForm\" class=\"form-group ng-fadeInLeft\" ng-class=\"{'has-error': inputForm[kolumna.id].$invalid && inputForm.$dirty}\">" +
"{{inputForm|json}}"+ //here is correct object (with $error and so on)
"<a ng-click=\"temp()\">a</a>" + //here is undefined
"</div>"
);
}])
&#13;
编辑2:
问题是我要使用这样的对象ng-form="model.inputForm"
- 现在一切正常
答案 0 :(得分:0)
您可以定义ng-model,例如
<input ng-model="myInput">
和
link: function (scope, element) {
console.log(scope.myInput);
}
答案 1 :(得分:0)
根据the documentation,使用ng-form="inputForm"
应该将控制器发布在本地范围内。如果您看不到它,您要么在覆盖该属性的嵌套范围,要么在祖先范围内查看。请记住,某些指令(例如ng-repeat
或ng-if
)会创建本地范围,因此在以下代码中:
<div ng-controller="myController">
<div ng-if="someCondition">
<div ng-form="myInput">
...
</div>
</div>
</div>
myInput
NOT 会在myController
管理的范围内显示
在link
函数中访问scope属性时,它还取决于链接指令的位置,因为该属性可能尚未分配给范围。尝试$watch
该属性,您可能会发现它稍后被分配。