假设我有两个控制器,这两个控制器是兄弟关系ListController ==> 列表控制器SearchController ==> 搜索控制器
ListController
SearchController
页面一上来就在列表控制器中 请求数据成功后挂载到 $scope.data 然后在列表视图中应用。
列表控制器
$scope.data
but 我现在要搜索。
搜索控制器中有方法。输入文字点击确认,获取服务端返回的数据。
搜索控制器
ok 我现在成功获取到数据了,我怎么把数据应用到 列表控制器 中 来渲染列表视图?
可以用angularjs的广播,关键代码如下ListController
$scope.$on('SearchController.onSearch',function(e,data){ console.log(data); });
//搜索方法请根据实例情况处理 ,这里只进行获得结果之后的处理 $scope.search = function(){ var data = [];//搜索到的数据,如果是异步拿到的,请把以后的代码放到回调中 $scope.$emit('SearchController.onSearch',data); }
$rootScope顶级控制器处理
$scope.$on('SearchController.onSearch',function(e,data){ $scope.$broadcast('SearchController.onSearch',data) });
就可以了。核心是利用了广播
写个service呀,用来保存全局数据。进入列表页面的时候,先判断下这个全局数据对象是否有数据,没有数据直接显示原来的数据,有数据表示搜索过了,就显示搜索数据或者其他你喜欢的显示方式。
点击了搜索,当然是重新请求数据了,直接重新给你的$scope.data= 赋值就ok
可以用angularjs的广播,关键代码如下
ListController
SearchController
$rootScope顶级控制器处理
就可以了。核心是利用了广播
写个service呀,用来保存全局数据。进入列表页面的时候,先判断下这个全局数据对象是否有数据,没有数据直接显示原来的数据,有数据表示搜索过了,就显示搜索数据或者其他你喜欢的显示方式。
点击了搜索,当然是重新请求数据了,直接重新给你的$scope.data= 赋值就ok