Должно быть, мне не хватает чего-то действительно элементарного. У меня есть поле ввода, в которое введено имя списка. Затем имя сохраняется в Firebase.
При использовании $watch
он работает нормально. Однако, если сделано через ng-keyup
события, он возвращает следующее сообщение об ошибке
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"}
}
};
EDIT: В комментарии, я включил значение $scope.which_list
показанного на контрольной точке.
'undefined is not a function 'является JavaScripts эквивалентом исключения nullpointer. Вы пытались поставить точку останова внутри 'enterThis' и проверить это состояние в этой точке? –
Да. Включено значение $ scope.which_list в комментарии выше. Я не понимаю, почему он становится простым объектом (вместо объекта синхронизации firebase) внутри функции enterThis. –