angular.js - angularjs中關於非同步載入的資料在controller之間共享的問題?
某草草
某草草 2017-05-15 16:59:38
0
5
578
雷雷
某草草
某草草

全部回覆(5)
PHPzhong

$http請求是一個非同步操作,執行SecondController時並不能保證這個時候已經取得到資料了

Ty80

你如果要把$http封到自己的服務中,必須了解$q和promise模式,此時相當於你在用同步的思想在做非同步的操作。

某草草

我們的專案中也有很多這種問題,簡單說下我目前的解決方法。和上面一樣也是封裝了個service , 用http去請求數據,回來數據的時候存一份到緩存,所有controller要數據都走這個service,保證數據的一致。

巴扎黑

一般封裝server時基本上都會用promise進行封裝的。 (推薦做法)

題主不想用promise,那就使用callback也能解決問題。

還有一個想法就是使用事件通知,當server取得到資料後,利用事件通知controller.

仅有的幸福

樓上說了 使用callback可以解決 我試了一下 成功了 分享一下代碼,希望對你有用

send() 是keyup事件 來動態取得 第一個控制器裡面的輸入值

var app = angular.module("zgeApp",[]);
    app.controller('firstCtrl', ['$scope','change', function($scope,change){
        $scope.send = function(){
           change.callback($scope.name)
        }
    }])
    app.controller('secondCtrl', ['$scope','change', function($scope,change){
        change.callback = function(data){
            $scope.name1 = data;
        }                      
    }])
    app.service("change",function(){
        return {};
    })
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板