0

AngularJS 的新手,抱歉。

我希望某些表单输入能够根据某些标准对它们进行重点设置。已通过此答案(focusMe)找到该答案。

问题是我的表单输入没有显示在模型中。

    <input type='text' name='school_name' ng-model='plan.school_name' focus-me="{{true}}"/>

这是一个jsfiddle来显示我的问题。

我在这里做错了什么?

4

1 回答 1

1

您在指令定义对象上定义了范围属性。当您这样做时,您会在整个元素之上创建一个隔离范围,以便应用于该元素的所有其他指令(包括 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);
            }
        });
    }
});

演示小提琴

于 2013-06-26T16:03:17.383 回答