这是另一个使用 attrs.$observe 的指令实现:
myApp.directive('focus', function () {
return function (scope, element, attrs) {
attrs.$observe('focus', function (newValue) {
newValue === 'true' && element[0].focus();
// or, if you don't like side effects (see @Christophe's comment):
//if(newValue === 'true') element[0].focus();
});
}
});
请注意,插入的 DOM 属性值(即{{cue.isNewest}}
)始终计算为字符串,因此将原因newvalue
与字符串'true'
而不是关键字进行比较true
。
HTML:
<input type="text" ng-model="cues[$index].text" focus="{{cue.isNewest}}"
class="input-xlarge" />{{cue.isNewest}}
这个小提琴也有一个方法来切换数组中的哪个项目应该有焦点。
注意,如果你不加载 jQuery,我们需要element[0].focus()
在链接函数中使用(不是element.focus()
),因为 jqLite 没有 focus() 方法。