没有 $scope 的 AngularFire 三向绑定

AngularFire 3-way-binding without $scope

所以我正在阅读有关三向绑定的 AngularFire 文档,并尝试在没有 $scope 的情况下进行。这是我的控制器:

angular.module('APP', ['firebase']).controller('Ctrl', Ctrl);

    Ctrl.$inject = ['$firebaseObject'];

    function Ctrl($firebaseObject) {
        var vm = this;

        var ref = new Firebase('https://testfirebase23.firebaseio.com/');
        var syncObj = $firebaseObject(ref);

        syncObj.$bindTo(vm, 'data');
    }

当我 运行 代码时,我得到这个错误:

TypeError: undefined is not a function
    at e (angularfire.min.js:12)
    at Object.e.bindTo (angularfire.min.js:12)
    at angularfire.min.js:12
    at processQueue (angular.js:13248)
    at angular.js:13264
    at Scope.$eval (angular.js:14466)
    at Scope.$digest (angular.js:14282)
    at Scope.$apply (angular.js:14571)
    at angular.js:16308
    at completeOutstandingRequest (angular.js:4924)

我不明白这个错误。有没有办法在没有 $scope 的情况下将对象或数组三向绑定到控制器?

firebase 的

$bindTo 永远不会使用 controllerAs 语法, 您可以通过将 firebase 对象直接分配给任何控制器上下文变量来实现。

代码

var ref = new Firebase('https://testfirebase23.firebaseio.com/');
vm.syncObj = $firebaseObject(ref); //this will ensure your binding will work

参考this SO answer

我最近开始研究 AngularFire,因为我是新手,在进行研发时我遇到了这个问题: $bindTo() 对 $scope 有很强的依赖性。 作为参考,你可以看到这个 Firebase 3-way data binding with ControllerAs syntax.