如何使用$ rootScope。$ broadcast定位特定的离子视图

时间:2014-12-15 18:05:22

标签: angularjs ionic-framework ionic

使用Ionic,调用$ rootScope。$ broadcast(“$ ionicView.enter”)将触发所有具有$ ionicView.enter事件事件处理程序的子视图。

如何缩小范围以定位特定视图的处理程序?

2 个答案:

答案 0 :(得分:0)

您还没有提供任何代码示例,但听起来您所描述的并不需要触发具有特定数据的事件,而是使用特定数据来监听事件。

也许这段代码可以帮到你:

$rootScope.$on( "$ionicView.enter", function( scopes, states ) {
        //here's an example of storing network error state in rootscope 
        //and some random important state that requires your data to be refreshed 

        if( $rootScope.networkErrorOccurred && states.stateName == "myImportantState" ) {
           //refresh data due to network error code goes here 
        }
    });

答案 1 :(得分:0)

当调用$ rootScope。$ broadcast(" $ ionicView.enter")" state" object不存在,因此你不能依赖stateName。

但是,你可以自己添加它,如下:

$rootScope.$broadcast('$ionicView.enter', {stateName: 'myImportantState'});

这将使特拉维斯的例子有效。


我能想到的另一种方法是保存对视图范围的引用并直接在其上发出事件。

我必须说我不会推荐它,但也许这就是你正在寻找的东西。

在视图的控制器内

app.controller('someViewCtrl', function($scope) {
  //Save a reference to the view's scope, using window for brevity
  window.someViewScope = $scope;
}

应用中的其他地方

window.someViewScope.$emit('$ionicView.enter')