假設我有兩個控制器,這兩個控制器是兄弟關係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