AngularJS - 根据值初始化表单数据

AngularJS - Initialize form data based on value

我正在尝试向我的应用程序添加编辑功能。在一个视图中,我有一个按钮可以将您带到编辑页面。

<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 中,但表单数据不会在视图加载时填充。

通常的做法是使用服务在 views/controllers 之间共享变量。

所以在你的情况下,你会像你怀疑的那样使用 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
       ...
}