【发布时间】:2013-04-29 16:33:47
【问题描述】:
我尝试让 firebase 绑定与 knockoutjs 一起使用,但无法让它们正常工作,因此我正在尝试使用 angularjs 进行一些测试。所以我下载了 angularjs,我试图输入/输出一些数据。所以现在我的 app.js 中有这个:
/* Controllers */
angular.module('MyCtrl3', ['$scope', 'angularFire'])
.controller ("MyCtrl3", function ($scope, angularFire) {
$scope.addMsg = function ($scope, angularFire) {
var url = 'https://kingpinapp.firebaseio.com/msgs';
var promise = angularFire(url, $scope, 'msgs', []);
$scope.msgs.push({name: "Firebase", desc: "is awesome!"});
}
});
然后我的html就是:
<!doctype html>
<html lang="en" ng-app>
<head>
<meta charset="utf-8">
<title>My AngularJS App</title>
<link rel="stylesheet" href="css/app.css"/>
<link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body>
<div>Angular seed app: v<span app-version></span></div>
<div ng-controller="MyCtrl3">
<button ng-click="addMsg()">Add</button>
</div>
<!-- bunch of scripts -->
</body>
</html>
只是试图让添加按钮推送到 Firebase。我在控制台中收到此错误:Uncaught TypeError: Cannot call method 'push' of undefined。 添加了一个jsfiddle:http://jsfiddle.net/NHaZz/5/
【问题讨论】:
-
你能用它制作一个小提琴吗?
-
我对 Angular 不是很熟悉,但您确定您的 URL 正在返回有效数据吗?如果服务器的返回为空或以某种方式意外,也许 $scope.msgs 没有被正确初始化?我会在你的 promise 回调中抛出一个控制台日志,看看返回 promise 时 '$scope' 和 '$scope.msgs' 的样子。要么,要么您需要手动/显式初始化 $scope.msgs (我不知道 Angular 或您使用的任何插件是否应该自己处理)
-
从外观上看,您没有将 $scope.msgs 初始化为控制器中的空数组。在 MyCtrl3 的开头尝试一下。
-
更新了代码以简化问题。还上传了一个jsfiddle。
-
你能试试@JBland 和我上面建议的一些事情并反馈吗?
标签: javascript angularjs firebase