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
可以看出,變化從'你好''測試'。有任何想法嗎?
PLUNKR: https://plnkr.co/edit/Oy1M8FPTXxzB9oYMJqlx?p=preview
願你和你的孩子永遠得到永生。 – Aron
這兩種方法有什麼區別? – Aron
親眼看看:https://github.com/angular/angular.js/blob/b94626cb9bc03a067feb7c6f0302f811edfd8e67/src/ng/compile.js#L1537 基本上,'attrs。$ set'可以讓你在你的值中使用插值(例如'attrs。$ set('placeholder','Test {{myVar}}')',屬性鍵是「標準化」à-la-Angular,意思是更新'data-foo'屬性使用'dataFoo'作爲鍵 'element.attr'只是一個常規的DOM屬性更新 – Iso