2016-04-12 14 views
4

チェックボックス(手動)がチェックされるたびに実行されるng-change内の関数を持っています。事前チェックボックスのロード時に変更機能を実行する

ここでは、ロード時にチェックボックスを事前にチェックし、ng-change内の関数を実行時にもロードしたいと考えています。

これを達成するために私が取ることのできるアプローチは何ですか?

+0

'ng-init'?何か試しましたか? – ajmajmajma

+0

ng-initは、関数を初期化するために使用した最初の指令です。しかし、期待された結果は返されませんでした。 ng-init以外の方法があるかどうか疑問に思っていました。 –

+0

コントローラまたは指令を使用していませんか?なぜあなたがng-changeで呼び出した関数を、コントローラーのinit/directiveリンク上のJSから直接呼び出すことができないのか分かりません。 'ng-change =" update() "' - > 'scope.update(); //コントローラーで – casraf

答えて

0

あなたは、あなたのモデルが自動的にそれを行いますことを、言う

$ scope.customer =顧客をする必要はありません。

<input type='checkbox' ng-model='customer.active' /> Is Active 

それはあなたにも負荷にし、onChangeイベント時にトリガされる機能を持つようにしたい場合は、あなたが

ディレクティブNG-のinitを使用することができ、自動的に

+0

... OPを除いて実際にはngChangeのメソッドを呼び出す必要がありますが、これはあなたの解決策ではカバーしません。 – dfsq

0

世話をしますあなたのスコープに接続されたonLoadとonChange関数を作成してください:

$scope.onLoad = function(params) { 
    // do some init functionality and call onChange functionality 
    onChange(); 
} 

$scope.onChange = function(value) { 
    // do function when a combobox is chaned 
} 

HTMLテンプレートでは、これらのメソッドをバインドする必要があります

<div ng-init="onLoad()"> 
    <input type='checkbox' ng-model='someModel' ng-change="('1')"/> Is one 
    <input type='checkbox' ng-model='someModel' ng-change="('2')"/> Is two 
    <input type='checkbox' ng-model='someModel' ng-change="('3')"/> Is three 
</div> 
0

ng-change角度ドキュメントhere上に述べたように、入力は、ユーザによって変更されていない限り実行されません。問題は、手動で変更をトリガーできることですが、一般的には示唆されておらず、dirty way and terrible practiceとみなされます。ウォッチャーを追加してモデルに加えられた変更を検出するのが適切です。

$scope.$watch("myModel", function(newValue, oldValue){ 
    // do something 
}); 
+0

手動で変更をトリガする方法の例がありますか? –

+0

更新しました – Akis

関連する問題