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. 我应该对全局键变量使用一些 getter/setter 方法吗?我尝试只是将editInit代码放入,editMission但表单数据不会在视图加载时填充。

4

1 回答 1

0

常见的做法是使用服务在视图/控制器之间共享变量。

因此,在您的情况下,您将使用您所怀疑的 getter/setter 方法。我不知道你到底想做什么,但你的情况下的服务看起来像这样:

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');
}

和控制器2:

//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 回答