【问题标题】:3-Way-Databinding for Single Document instead of Collection using Meteor and Angular使用 Meteor 和 Angular 对单个文档进行 3-Way-Databinding 而不是 Collection
【发布时间】:2015-12-02 00:09:51
【问题描述】:

根据文档,可以将集合绑定到 Angular 范围

 angular.module('socially', ['angular-meteor']);

  angular.module('socially').controller('PartiesListCtrl', ['$scope', function ($scope) {
    $scope.parties = $meteor.collection(Parties);
  }]);
}

当有我想要显示的项目列表时,这非常有效。

但现在我想编辑其中一项,这意味着我没有要绑定的集合,只有一个文档

 angular.module('socially', ['angular-meteor']);

  angular.module('socially').controller('PartiesListCtrl', ['$scope', function ($scope) {
    $scope.party = $meteor.collection(Parties.findOne({my query});
  }]);
}

我需要一个 3-Way-Binding 来将来自客户端的更改立即保存到数据库中。

怎么可能只用一个文档?

【问题讨论】:

  • 我仍然无法解决您的问题。您可以简单地从集合中检索特定对象,然后对其进行编辑并将其传递给数据库。它将反映在 html 页面上。
  • 我有一个用于编辑的子页面,在这里我只检索我想要编辑的单个文档,而不是再次检索完整的集合。我可以使用 $scope.party = Party.findOne({my query}); 将它直接绑定到范围。没问题,但是在视图中更改时它不会与数据库同步

标签: javascript angularjs meteor data-binding angularjs-scope


【解决方案1】:

只需将其传递给我们的 angularjs 函数。

<div ng-repeat="party in parties">
      <span ng-click="editparty(this)">{{party.location}}</span>
 </div>

在 angularjs 函数 this(现在是 obj)中将包含 party 对象。

$scope.editparty = function(obj){

    obj.party.location = "England"; //edit party object

    //pass to our database...

    obj.party = $meteor.collection(Parties.findOne({my query});

});

【讨论】:

  • 当我这样做时,我得到“无法读取未定义的名称”和“无法读取未定义的长度,其中查询的结果不是未定义的。我认为 $meteor.collection 需要一个集合,而不是“findOne”返回的单个文档。您发布的代码与我的问题无关,我的问题发生在尝试绑定单个文档时,而不是集合
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多