AngularJS 的新手,抱歉。
我希望某些表单输入能够根据某些标准对它们进行重点设置。已通过此答案(focusMe)找到该答案。
问题是我的表单输入没有显示在模型中。
<input type='text' name='school_name' ng-model='plan.school_name' focus-me="{{true}}"/>
这是一个jsfiddle来显示我的问题。
我在这里做错了什么?
您在指令定义对象上定义了范围属性。当您这样做时,您会在整个元素之上创建一个隔离范围,以便应用于该元素的所有其他指令(包括 ngModel)也受到它的影响。
此问题已在其他地方解决(请参阅“在隔离范围指令监视中未观察到表单元素 ng-model 更改”、“ ngModel 和具有隔离范围的组件”和github 问题 1924),但是要克服它非常麻烦。
在这种特殊情况下,您可以使用对象(使用 $observe 方法)访问您的focus-me
属性,而不是定义一个孤立的范围:attrs
var myApp = angular.module('myApp',[]).directive('focusMe', function($timeout) {
return function(scope, element, attrs) {
attrs.$observe('focusMe', function(value) {
if ( value==="true" ) {
$timeout(function(){
element[0].focus();
},5);
}
});
}
});