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をロードしない場合、jqLiteにはfocus()メソッドがないためelement[0].focus()
、リンク関数で使用する必要があることに注意してください(ではありません)。element.focus()