ターゲットページのコントローラで$ scope.emitを使用すると、$ state.goステートメントの後に見つかったので、これを尋ねています。初期ページのコントローラ$ state。$ onはメッセージを受信できません。
とにかく私はこの動作がすべてのコントローラで発生しないことに気づいたので、これは私を混乱させます。
私のプロジェクトの3つのコントローラーを例に挙げてみましょう.Ctrl1とCtrl2の両方にstate.go〜Ctrl3があります。
CTRL1:
var NewsCtrl = function($rootScope, $scope, $http, $q, $location, $state, $stateParams, $sce, $ionicHistory, $ionicViewService) {
$rootScope.$on('updateNewsLocalViewsCount', function(event, data) {
console.log('##root scope receiving updateNewsLocalViewsCount:' + event + ':' + JSON.stringify(data));
});
$scope.$on('updateNewsLocalViewsCount', function(event, data) {
console.log('#scope receiving updateNewsLocalViewsCount:' + event + ':' + JSON.stringify(data));
});
$scope.gotoNotifications = function() {
$state.go("app.notifications");
};
};
<button
class="button-icon"
ng-click="gotoNotifications()">notifications
</button>
CTRL2:
var LeadsCtrl = function($cordovaNetwork, $cordovaPreferences, $ionicPlatform, $localStorage, $rootScope,
$cordovaStatusbar, $state, $location, $translate,
$ionicLoading) {
$rootScope.$on('LeadSavedAsCustomer', function(event, data) {
console.log('#root scope receiving Leads Ctrl-LeadSavedAsCustomer-' + event + ':' + JSON.stringify(data) + ' DO NOTHING ');
});
$scope.$on('LeadSavedAsCustomer', function(event, data) {
console.log('#scope receiving Leads Ctrl-LeadSavedAsCustomer-' + event + ':' + JSON.stringify(data) + ' DO NOTHING ');
});
$scope.gotoNotifications = function() {
$state.go("app.notifications");
};
};
<button
class="button-icon"
ng-click="gotoNotifications()">
notifications
</button>
CTRL3:
var NotificationsCtrl = function($scope) {
$scope.$emit('updateNewsLocalViewsCount', {"newsid":"1", "counts":"1"});
$scope.$emit('LeadSavedAsCustomer', {"customerId": "1", "leadId": "1"});
}
結果:CTRL1で
:のみ$ rootScope $呼び出されたの。
(Ctrl2):$ rootScope。$ onと$ scope。$ onの両方が呼び出されました。
実際にこれらのコントローラーはかなり似ています。なぜ行動が異なるのか分かりません。
state.goまたはhtmlは自動的に親子関係を作成しますか?
これらのコントローラはすべて、分離されたコントローラです。つまり、ネストされた構造体を持たない独自のhtmlファイルがあります。ネストされたコントローラがネストされたコントローラから親にデータを送信できることがわかります。実際には$ state.goまたはを使用しているときに親にメッセージを送信することもできます。これについてのかなりの数の.. – zjx