新手AngularJS,抱歉。
我希望某些表单输入可以根据特定条件设置焦点。 已找到答案 with this answer(focusMe)。
问题是我的表单输入没有显示在模型中。
<input type='text' name='school_name' ng-model='plan.school_name' focus-me="{{true}}"/>
这是一个 jsfiddle 来显示我的问题。
我在这里做错了什么?
答案 0 :(得分:1)
您在指令定义对象上定义了scope属性。当您这样做时,您在整个元素的顶部创建一个隔离的范围,以便应用于该元素的所有其他指令(包括ngModel)也受其影响。
此问题已在其他地方得到解决(请参阅“form element ng-model change not observered in isolate scope directive watch”,“ngModel and component with isolated scope”和github issue 1924),但要克服这些问题非常麻烦。
在这种特殊情况下,我使用focus-me
对象访问attrs
属性(使用$ observe方法),而不是定义隔离范围:
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);
}
});
}
});