指令只被調用一次
回答
這是預期的行爲,鏈接函數僅針對任何指定的指令實例調用一次。既然你感興趣的focus
情況下,我加入到該元素的指令適用於事件偵聽器:
var mainApp = angular.module("myapp", ['ngMaterial']);
mainApp.directive("myDirective", function($log) {
return {
restrict : 'A',
require : "ngModel",
scope : {
myDirective : "="
},
link : function(scope, element, attrs, ngModel) {
element.on('focus', doSomething);
function doSomething() {
$log.log("value is:", scope.myDirective);
if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {
ngModel.$setUntouched();
ngModel.$setValidity();
}
}
}
}
});
http://plnkr.co/edit/RwTSsQKBtzzJDXE8by1I?p=preview
既然你也提到了「光標」,你可能會喜歡mouseover
事件也是如此。這是因爲添加另一個事件監聽器一樣簡單:
element.on('mouseover', doSomething)
注:我添加了一個額外的支票scope.myDirective
避免對閱讀的undefined
length
控制檯錯誤。
在OP的要求:
我不知道,如果jqLite支持所有這些,但對於所有DOM事件的列表,你應該檢查這個page,你可能最感興趣的FOCUS-,鍵盤 - &鼠標事件。
有關所有jqLite功能列表來查看this
完美!你能把我鏈接到「元素」對象可以使用的函數列表嗎?你還可以將我鏈接到「焦點」/「鼠標懸停」之類的事件列表嗎? –
@UmerFarooq我在我的文章中添加了相關鏈接 –
@UmerFarooq我錯過了它,但我還添加了一個鏈接到所有jqLite函數 –
- 1. 角度指令只被調用一次
- 2. requestAnimationFrame只被調用一次
- 3. Toast.makeText只被調用一次
- 4. TouchesBegan只被調用一次
- 5. viewWillAppear只被調用一次
- 6. setNeedsDisplay只被調用一次
- 7. 爲什麼這個角度指令只調用一次?
- 8. jQuery .load()函數只被調用一次
- 9. cellForRowAtIndexPath只能被調用一次
- 10. ngRoute RouteController只被調用一次
- 11. Windows掛鉤只被調用一次
- 12. 使emberjs事件只被調用一次
- 13. file.each_line只能被調用一次
- 14. 。擴展函數只被調用一次
- 15. interstitialWillDismissScreen只會被調用一次
- 16. ReactiveX:使Observable.Create()只被調用一次
- 17. appdelegate dealloc只會被調用一次?
- 18. jQuery .load()只被調用一次
- 19. AS2:setInterval只被調用一次
- 20. didReceiveAuthenticationChallenge只會被調用一次iPhone
- 21. 函數應該只被調用一次
- 22. Outlook.Explorer.SelectionChange事件只被調用一次
- 23. $ .ajax使API調用兩次,儘管它只被調用一次
- 24. 指令應該只執行一次
- 25. Angular指令只有第一次工作
- 26. 我的方法運行兩次,它只被調用一次
- 27. PHP - PDO查詢執行兩次execute()只被調用一次
- 28. Titanium「addEventListener」被多次調用,但我只需要它一次
- 29. 一個函數的局部變量的字節分配和POP指令只被調用一次
- 30. 點擊事件的角度指令被調用兩次
不鏈接plunkr,使用堆棧段或顯示代碼。當plunkr鏈接不再可用時,這個問題是不可用的 – Walfrat
@Walfrat好的。 Downvoter,請務必說出倒票的原因,以便將來不會重複「假定」的錯誤! –
那是原因:) – Walfrat