0
私のアプリでは、私はboradcasting
なんらかの値をチェックしながら特定のポイントのイベントです。それはうまく動作しますが、問題は、後で私がbroadcast
をトリガーしているときはいつでも、私の条件が働いている、つまり、私の状態がtrigger
のhappendの後に常に働いていることを意味します。 、あなたはロジックを切り替えたい場合は
var myWatch = scope.$watch('ctrl.data.deviceCity', function(){
if(someCondition === true){
myWatch(); //deregister the watcher by calling its reference
}
});
ちょうどいくつかを設定します。あなたは変数にその参照を格納し、それを呼び出すことによって、ウォッチャの登録を取り消すことができ
scope.$watch('ctrl.data.deviceCity', function(newcity, oldcity) {
if (!newcity) {
scope.preloadMsg = false;
return;
}
scope.$on('cfpLoadingBar:started', function() {
$timeout(function() {
if (newcity && newcity.originalObject.stateId) { //the condition not works after the first time means alwasy appends the text
console.log('each time');
$('#loading-bar-spinner').find('.spinner-icon span')
.text('Finding install sites...');
}
}, 100);
});
});
あなたの説明は何もないようです表示するコードを使用します。何が起きているのかもう少し詳しく説明できますか?また、ctrl.data.deviceCityが変更されるたびに、 'cfpLoadingBar:started'の新しいeventListenerが作成されることに注意してください。したがって、 'deviceCity'を10回変更すると、突然console.logを実行してそのスピナーのテキストを変更する10ドルのタイムアウトが発生すると想像してください。 – vileRaisin
基本的には、テキストを1回だけ表示する必要があります。それは都市が変わる時を意味します。その後、私はテキストを表示する必要はありません。私はそれを削除する必要があります – 3gwebtrain