ファクトリを使用してネストされたビューの2つの異なるコントローラ間で通信するプランカを作成しました。以下はプランカのURLです。 https://plnkr.co/edit/fWA2Xugjbkf3QvHKfTa0?p=preview。 ここは工場です。工場を使用して2つのコントローラの間で通信する
routerApp.factory("widgetService",function($state){
var callbackFunctions=[];
var counter=0;
var addWidget=function(name){
callbackFunctions[0](name);
}
var addCallback=function(callback){
if (callbackFunctions.length===0) {
callbackFunctions.push(callback);
}
}
return{
addCallback: addCallback,
addWidget: addWidget
}
})
シナリオ1:ホームページの下の "リスト" メニューで 1.をクリックします。 2.「確認」ボタンをクリックします。強調表示された領域の変更が黄色で表示されます。テキストが「Chandan」から「singh1」に変わります。 3.もう一度[確認]ボタンをクリックします。テキストは "singh1"から "singh2"に変わります。だから私はこれで2つのコントローラ間で通信することができます。
シナリオ2: 1.シナリオ1を手順2まで繰り返します。 2.ホームページの下にある「PARAGRAPH」メニューをクリックします。 3.ホームページの下にある「リスト」メニューをクリックします。確認ボタンをクリックします。テキストは変更されません。それは "ちゃんとした"ままです。 状態を変更すると通信が機能しません。
また、私はモデルが変化しているのを観察しましたが、同じものは視野に反映されていません。さらに、ビューをrootscopeにバインドすると、ビューが更新されます。 明確にしてください。
ありがとうNikolaj。出来た。 – ckmind
あなたが役に立つと分かっていれば、投票し、回答としてマークしてください。 –
私はその理由を知らせることができます、それは古いコントローラのスコープに登録されているときにchangeMyName()関数が呼び出されます。私はそれを投票しました – ckmind