AngularJS - 根据值

时间:2016-02-21 19:06:04

标签: angularjs firebase angularfire angularjs-ng-init

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

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

1 个答案:

答案 0 :(得分: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');
}

和controller2:

//include 'missionKeyService' in your controller function params
$scope.editInit = function() {
       var currentKey = missionKeyService.getMissionKey();
       //do something with this key
       ...
}