Javascript 调用$bindTo后如何删除angularfire对象

Javascript 调用$bindTo后如何删除angularfire对象,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,在对对象调用angularfire的$bindTo()后,如何从firebase中删除对象。出于某种原因,调用$bindTo()似乎会从对象中删除$remove()函数 例如,除非您注释掉$bindTo行,否则以下应用程序中的删除按钮不起作用 JS HTML 删除 {{ctrl.test | json}} 请注意,$bindTo()不会将同步对象放在作用域中,而只是将数据放在作用域中。在本例中,您已将同步的$firebaseObject置于this.test,然后还将数据绑定到this.te

在对对象调用angularfire的
$bindTo()
后,如何从firebase中删除对象。出于某种原因,调用
$bindTo()
似乎会从对象中删除
$remove()
函数

例如,除非您注释掉
$bindTo
行,否则以下应用程序中的删除按钮不起作用

JS

HTML


删除
{{ctrl.test | json}}
请注意,$bindTo()不会将同步对象放在作用域中,而只是将数据放在作用域中。在本例中,您已将同步的$firebaseObject置于
this.test
,然后还将数据绑定到
this.test

请注意,在本例中,没有理由使用$bindTo()。您可以在不创建三向绑定的情况下调用$remove(),这仅在您不想手动调用$save()时对对象进行本地更改时有用

此外,此处$loaded的用法不正确。使用$bindTo()时,您将希望使用它返回的承诺


试试
this.test.ref().remove()
ref也是未定义的啊,看看我已经想知道的代码。您完全可以重构ref并调用
remove()
,但感觉应该有一种更简单的方法。我看看能不能挖点东西。使用
{{ctrl.test | json}
方法记录值值得称赞。顺便说一句,我们正在努力推广这一点。:-)是的,我找到了一些解决办法,比如重建裁判,但我只是想知道最好的方法是什么。谢谢你调查它。。。调用$bindTo后如何删除angularfire对象?我是否只需要创建两个$firebaseObjects并在其中一个上调用$bindTo,在另一个上调用$remove?有没有办法调用$bindTo而不替换您正在调用它的对象?只需尝试类似这样的
this.test.$bindTo($scope,'ctrl.test2')这似乎有效。有了它,我可以绑定到视图中的
ctrl.test2
,并在控制器中的
this.test
上调用
$remove
。这并不理想,但这是迄今为止我发现的最好的解决办法,我看不出这是一个怎样的解决办法。如果使用POJO覆盖$firebaseObject引用,则该引用将不再存在,并且不能调用$remove。不覆盖它在这里很难解决问题。为了冗余起见,您在这里所做的任何事情都不需要$bindTo引用。您可以在视图中直接使用$firebaseObject引用。这是一个关于
$bindTo
行为的问题,因此需要使用
$bindTo
。我可以在示例中添加一个输入框,但它不会对我的问题产生任何影响。使用$bindTo时,需要保留对同一数据的两个引用,这有点奇怪。一个位于可以更新服务器的作用域上,另一个具有$firebaseObject方法,如$remove。$bindTo便于将$firebaseObject的数据绑定到作用域。它本身既不是必需的,也不是$firebaseObject。试图在一个同步的原型对象上观看会有点精神分裂。如果需要一个对象,请将$firebaseObject绑定到作用域。进行更改时调用$save()。然后跳过$bindTo。
var app = angular.module('myApp', ['firebase']);

app.controller('myCtrl', MyCtrl);

function MyCtrl($scope, $firebaseObject) {
  var self = this;
  this.test = $firebaseObject(new Firebase('https://bindtoissue.firebaseio-demo.com/test'));

  //if you comment out this line then the delete button will work.
  this.test.$bindTo($scope, 'ctrl.test');

  this.test.$loaded(function() {
    self.test.one = 1;
    self.test.two = 2;
    self.test.three = 3;
  });
}

MyCtrl.prototype.delete = function() {
  //$remove is undefined
  this.test.$remove();
}
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
    <button ng-click="ctrl.delete()">delete</button>
    <pre>{{ctrl.test | json}}</pre>
</div>
this.test.$bindTo($scope, 'ctrl.test')
  .then(function() {
    self.test.one = 1;
    self.test.two = 2;
    self.test.three = 3;
  });