1

アプリに編集機能を追加しようとしています。1 つのビューには、編集ページに移動するためのボタンがあります。

<button ng-click="editMission(selectedMission.key)">Edit Mission</button> 

この値selectedMission.keyは、編集ページのフォーム データを初期化する対象を決定するために使用されます。

コントローラーでは、関数は次のようになります。

  $scope.editMission = function(key){
    $location.path('/edit');
  }

編集ページには次のものがあります。

<div data-ng-init="editInit()">

そして、私のコントローラーには次のものがあります。

      $scope.editInit = function(){
        var query = myDataRef.orderByKey();
        query.on("child_added", function(missionSnapshot){
          if (missionSnapshot.key()==key){
           ...
          }
        });    
      } 

のキー値に基づいて初期化関数を実行するにはどうすればよいですかeditMission。グローバルキー変数でゲッター/セッターアプローチを使用する必要がありますか? editInitコードを配置しようとしましeditMissionたが、ビューの読み込み時にフォーム データが入力されません。

4

1 に答える 1

0

一般的な方法は、サービスを使用してビュー/コントローラー間で変数を共有することです。

したがって、あなたの場合、疑ったようにゲッター/セッターアプローチを使用します。あなたが何をしようとしているのか正確にはわかりませんが、あなたの場合のサービスは次のようになります。

app.factory('missionKeyService', function() {

    var currentMission= {};            

    return {

        setMissionKey: function(missionKey) {
            currentMission.key = missionKey;
        },

        getMissionKey: function() {
            return currentMission.key;
        }
    }
})

そして、コントローラー1で:

//include 'missionKeyService' in your controller function params 
$scope.editMission = function(key) {
    missionKeyService.setMissionKey(key);
    $location.path('/edit');
}

そしてcontroller2:

//include 'missionKeyService' in your controller function params
$scope.editInit = function() {
       var currentKey = missionKeyService.getMissionKey();
       //do something with this key
       ...
}
于 2016-02-21T20:08:38.527 に答える