我尝试让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。我在控制台中收到此错误:未捕获TypeError:无法调用未定义的方法'push'。 添加了一个jsfiddle:http://jsfiddle.net/NHaZz/5/
答案 0 :(得分:3)
AngularFire返回一个promise,因此在完成promise之前你不能操作数组。您可以使用then
函数执行此操作,如下所示:
angular.module('MyCtrl3', ['$scope', 'angularFire'])
.controller ("MyCtrl3", function ($scope, angularFire) {
var url = 'https://kingpinapp.firebaseio.com/msgs';
var promise = angularFire(url, $scope, 'msgs', []);
promise.then(function() {
$scope.addMsg = function ($scope, angularFire) {
$scope.msgs.push({name: "Firebase", desc: "is awesome!"});
}
});
});
答案 1 :(得分:2)
AngularFire 0.3.0似乎已经改变了一点,所以你不能只使用angularFire发送一个url,你需要提供:
new Firebase("example-url-to-your-firebase.com");