Firebase $save 在事件处理函数中不起作用
Firebase $save doesn't work inside an event handler function
我一定是漏掉了一些非常基本的东西。我有一个输入列表名称的输入框。然后将该名称保存到 Firebase。
使用$watch
时,效果很好。但是,如果通过 ng-keyup
事件完成,则会 returns 出现以下错误
TypeError: undefined is not a function.
我错过了什么?
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
的值。
当前,当您更改范围 which_list
转换为普通旧 JavaScript 对象 (POJO) 时,我相信您需要无法在范围变量和 $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 = {}
希望对您有所帮助,谢谢。
我一定是漏掉了一些非常基本的东西。我有一个输入列表名称的输入框。然后将该名称保存到 Firebase。
使用$watch
时,效果很好。但是,如果通过 ng-keyup
事件完成,则会 returns 出现以下错误
TypeError: undefined is not a function.
我错过了什么?
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
的值。
当前,当您更改范围 which_list
转换为普通旧 JavaScript 对象 (POJO) 时,我相信您需要无法在范围变量和 $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 = {}
希望对您有所帮助,谢谢。