2016-07-09 4 views
0

私は以下のコードを持っています(下記参照)。MyCtrl1は、URLに応じてアプリがルーティングされるビューのコントローラです。コントローラは、http要求から約束を返すモデルサービス内の関数を呼び出します。このモデルは、レスポンスとコントローラへの約束をもとに、別のサービスresponseServiceに何かを記録することになっています。 http応答にしばらく時間がかかりますが、ユーザーがURLを介してビューを切り替え、それが完了するまで要求に応じてモデルを操作できるようにする必要があります。ここに私の質問です:約束を待っている間AngularJSビューを切り替える

ユーザースイッチは、httpリクエストの途中で表示した場合:

  1. MyCtrl1は、次回ユーザーが に切り替わりすなわち、なくなってMyCtrl1ビューをを覚えていて、 約束は返されないでしょうか?
  2. レスポンスを受信したときに、モデルサービスが依然としてhttpリクエストと更新で動作していますか responseService
  3. 後者が「いいえ」の場合、どのように動作させることができますか? httpが動作している間にビューを切り替えるには、ユーザ が必要です。

ありがとう!

myctrl1.controller.js:

angular.module('myApp') 
    .controller('MyCtrl1', ['$scope', 'myModels', function ($scope, myModels) { 

    myModels.listMyData().then(
     function(response) { 
      ... 
     }, 
     function(response) { 
      ... 
     } 
    ); 
}]); 

myModels.models.js:

angular.module('myApp') 
    .service('myModels', ['$http', '$q', 'responseService', function($http, $q, responseService) { 

    this.listMyData = function() { 

     var promise; 
     ... 

     $http.get('http://xxx.xxx.xxx').then(
      function(response) { 
       // register something in responseService 
       // assign promise 
      }, 
      function(response) { 
       // register something in responseService 
       // assign promise 
      } 
     ); 

     return promise; 
    } 

}]); 

答えて

1

あなたは彼らが参照されていない場合にのみ、JavaScriptでのオブジェクト/機能が削除されていると言うことができます。電話をしたとき:

$http.post(...).then(callback) 

callback機能が参照されました。したがって、削除されることはありません。ユーザーが表示を切り替えると無視されます。 質問に答える: 1.はい 2.はい

関連する問題