2016-02-19 64 views
2

最近我已經實現了它使用的CSS定製一個複選框指令。當複選框的值被選中時,我需要從作用域中調用一個函數。我有一些與ng-click工作,但這不是我正在尋找。如何使用複選框在AngularJS指令中調用函數進行檢查?

我看着ng-true-value,但它需要一個值,而不是一個功能我可以調用。有沒有辦法解決這個問題,只有當複選框處於活動狀態時才能調用該函數?這是該指令的定義:

{ 
    restrict: 'E', 
    replace: true, 
    require: ['^ngModel'], 
    scope:{ 
      isChecked: '=?', 
      secondFunction: '&' 
      }, 
    template: function (elem, attr){ 
     var a= '<label class="switch"'+attr.class+'><input type="checkbox" ng-class="{checked: isChecked}"><i></i></label>'; 
     return a;  
    }, 
} 

​​

+0

你可以看看$ scope.watch $腕錶(watchExpression,聽衆,[objectEquality]); 註冊一個偵聽器回調要執行每當watchExpression變化。 的watchExpression被稱爲在每次調用$消化()和應該返回將要觀看的價值。 (watchExpression在使用相同的輸入執行多次時不應該改變它的值,因爲它可以通過$ digest()多次執行。 –

+0

根據您的需要,您可以使用'ng-change'或一個簡單的'$ watch'來控制你的邏輯,這可能發生在鏈接函數中(因爲你可以訪問示波器),但是我建議只用控制器代替指令。 – ryanyuyu

+0

非常感謝你的回覆和編輯。正如你所建議的$ watch一樣,還有一個問題是有什麼辦法可以做到這一點,並且有任何我使用的函數,所以這個指令可以是通用的嗎?比如ng-click。 – WebDevNewbieGirl

回答

0

上chechkbox使用ng-change = 'functionName()'

Reference:

0

可以使用NG-模式手錶的函數,在檢查複選框進行邏輯

$scope.$watch('modelName', function() { 
    // do something here 

}); 
相關問題