【问题标题】:AngularJS - Initialize form data based on valueAngularJS - 根据值初始化表单数据
【发布时间】:2016-02-21 19:06:04
【问题描述】:

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

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

【问题讨论】:

  • 你不能用 editMission() 设置范围变量,然后将这些变量绑定到视图中的表单(ng-model)吗?
  • 您使用的是ngRoute 还是ui-route
  • @drakyoko 可以这样做,但字段和单选按钮在视觉上不会更改为变量值。
  • @georgeawg 我也没用过,不知道是什么。
  • 我建议您使用 AngularFire.AngularFire 是 Firebase 官方支持的 AngularJS 绑定。它与 AngularJS $q 服务集成。

标签: angularjs firebase angularfire angularjs-ng-init


【解决方案1】:

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

因此,在您的情况下,您将使用您所怀疑的 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
       ...
}

【讨论】:

  • 你只是缺少一个封闭的大括号来关闭返回
  • 对不起,是在这里即时编码。编辑了我的答案。还删除了controller2 中多余的括号位(不适用于editInit 函数)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 2019-12-05
  • 1970-01-01
相关资源
最近更新 更多