在将其发送到视图之前,我想对我的火力计数据INSIDE MY CONTROLLER进行一些简单的字符串比较,计算和过滤。我似乎无法弄清楚如何访问firebase对象中的数据。
这是我的firebase对象&test;' + $ routeParams.id:
{
"createdDate":"2014-03-30T18:04:28.927Z",
"modified":"2014-03-30T18:04:28.927Z",
"region":"shoulder",
"step1":{
"defined_incident":"no",
"localized_or_referred":"localized",
"recent_surgery":"no",
"symptoms":"constant"
},
"title":"testtest",
"user":"simplelogin:1"
}
这是我的控制器:
.controller('TestCtrl', ['$scope', 'syncData', '$routeParams', function($scope, syncData, $routeParams) {
syncData('tests/'+$routeParams.id).$bind($scope,'test');
//this is where i want to access $scope.test
//and check if $scope.test.region is equal to 'shoulder', etc.
if($scope.test.region.$value == 'shoulder') {
if($scope.test.step1.localized_or_referred.$value == 'localized') {
alert('Shoulder & Localized!');
}
}
}])
我在这里缺少什么? 我也尝试使用OrderByPriority过滤器将firebase对象转换为数组,但没有成功。
答案 0 :(得分:1)
您的问题是$scope.test
之后很快就会调用使用$bind
值的代码。您需要为应用程序提供与Firebase同步的时间,直到您没有任何数据为止。
$bind
方法返回一个承诺,一旦从Firebase加载初始数据,该承诺就会得到解决。尝试这样的事情:
.controller('TestCtrl', ['$scope', 'syncData', '$routeParams', function($scope, syncData, $routeParams) {
syncData('tests/'+$routeParams.id).$bind($scope,'test').then(function () {
//this is where i want to access $scope.test
//and check if $scope.test.region is equal to 'shoulder', etc.
if($scope.test.region.$value == 'shoulder') {
if($scope.test.step1.localized_or_referred.$value == 'localized') {
alert('Shoulder & Localized!');
}
}
});
}])