Firebase $ save在事件处理函数中不起作用

时间:2015-03-07 17:33:43

标签: angularjs firebase angularfire

我必须遗漏一些非常基本的东西。我有一个输入框,其中输入列表名称。然后将该名称保存到Firebase。

使用$watch时,效果很好。但是,如果通过ng-keyup事件完成,则会返回以下错误

  

TypeError:undefined不是函数。

我错过了什么?

HTML:

<input id="which_list" ng-keyup="enterThis($event)" ng-model="which_list.name" >{{which_list.name}}</span>

控制器:

$scope.which_list = sync.$asObject();

$scope.$watch('which_list.name', function() {
   gDataService.which_list.name= $scope.which_list.name;
    $scope.which_list.$save()    // THIS WORKS
                                // $scope.which_list => d {$$conf: Object, $id: "id", $priority: null, name: "to1_list", $save: function…}
    .then(function(){  
        console.log($scope.which_list.name);
    });
});

$scope.enterThis = function(event){
    if (event.keyCode === 13) {
        gDataService.which_list.name= $scope.which_list.name;
        $scope.which_list.$save();   // THIS DOESN't WORK
                                     // $scope.which_list = Object {name:"list_name"}

    }
};

编辑:在评论中,我包含了断点处显示的$scope.which_list的值。

1 个答案:

答案 0 :(得分:2)

目前,当您将范围which_list转换为普通旧JavaScript对象(PO​​JO)时,我认为您需要无法在范围变量和$asObject()之间进行3路绑定。

<强>代码

var which_list = sync.$asObject();
// set up 3-way data-binding
which_list.$bindTo($scope, "which_list");

<强>更新

另外,当您使用包含名称和其他属性的$scope.which_list对象时,请在启动控制器时初始化它,如

$scope.which_list = {}

希望这可以帮助你,谢谢。