2017-11-07 9 views
0

の結果とDOMを更新:私のコントローラでAngularJS - 私はこのマークアップを持っているサービスメソッド

<div ng-controller="AutoDeployController as autoDeploy"> 
    <input type="text" ng-model="autoDeploy.message"> 
    <p>Message: {{ autoDeploy.message }}</p> 
</div> 

<button ng-click="autoDeploy.change()">change</button> 

この方法:

model = this; 

model.change = function(){ 
    model.message = AutoDeployService.returnOne(); 
}; 

この方法は、私のサービスモジュールに:

function returnOne(){ 
    return "one"; 
} 

クロムを使用してデバッグすると、model.message"one"に変更され、 peはテキストボックス内でmodel.messageを変更し、model.messageの他のフィールドはオンザフライで変更されます...ボタンをクリックするとDOMが更新されないのはなぜですか?

$compileまたはDOMオブジェクトを作成して追加するためのボタンを使った私の経験に基づいた別のシステム変数が含まれている可能性がありますが、システム変数がいつ/なぜ使用されるかわかりません。

答えて

1

あなたのボタンは、あなたのautoDeployコントローラの外にある問題です。コントローラ内のdiv内のボタンを移動すると、changeメソッドが呼び出されます。

<div ng-controller="AutoDeployController as autoDeploy"> 
    <input type="text" ng-model="autoDeploy.message"> 
    <p>Message: {{ autoDeploy.message }}</p> 
    <button ng-click="autoDeploy.change()">change</button> 
</div> 
+0

奇妙な...私は既に@ jrDeveloperの最初のコメントで述べたようにそれを試しました。それは今でも働く。それは問題の原因となっているはずです。 –

+0

残りのコードを見なくても答えが得られるのであれば、ディレクティブテンプレートを挿入する私の他のボタンがdivの外側でコントローラーと一緒に動作するのはなぜですか?たぶんこの機能は、すでにコントローラに搭載されているのではなく、サービスに含まれているからでしょうか? –

+1

キーは「autoDeploy」というコントローラーにアクセスしようとしているため、設定されているdiv内にある必要があります。他のボタンがautoDeployコントローラのメソッドを呼び出そうとしない場合、それらのコントローラdiv内にある必要はありません。 – user553086

関連する問題