1
私は数秒ごとにプレースホルダーを変更したいテキスト入力フィールドを持っています。しかし、私はこれでコントローラを汚染したくないので、この機能を指令にカプセル化したいと思います。AngularJSディレクティブでプレースホルダを変更しますか?
これは私のディレクティブは次のようになります。
myApp.directive('searchBox', ['$interval', function($interval) {
return {
restrict: 'A',
link(scope, element, attrs) {
$interval(function() {
attrs.placeholder = 'New';
}, 1000);
}
}
}])
とHTML:
<input type="text" class="form-control" placeholder="Old" ng-model="search" search-box>
プレースホルダは頑固に変更されませんが、コンソールにattrs.placeholder
が変更に見ることができるにもかかわらず、 「Hello」から「Test」へ。何か案は?
PLUNKR: https://plnkr.co/edit/Oy1M8FPTXxzB9oYMJqlx?p=preview
あなたとあなたの子供たちは、永遠に祝福されることがあります。 – Aron
2つの方法の違いは何ですか? – Aron
あなた自身を見てください:https://github.com/angular/angular.js/blob/b94626cb9bc03a067feb7c6f0302f811edfd8e67/src/ng/compile.js#L1537 基本的に、 'attrs。$ set'はあなたの値に補間を使うことを可能にします(例えば 'attrs。$ set( 'プレースホルダー'、 'テスト{{myVar}}')'、属性キーは 'normal-la-Angular 'で、' data-foo'属性を更新する – Iso