Firebase child_added 和 ng-repeat
Firebase child_added and ng-repeat
我使用 child_added 和 ng-repeat 来显示状态列表,这部分工作正常,但是当我点击列表中的一个状态时,我被发送到 tab/statuses/而不是转到 tab/statuses/:statusid。任何帮助将不胜感激。
app.js
.state('tab.statuses', {
url: "/statuses",
views: {
'tab-statuses': {
templateUrl: "templates/statuses.html",
controller: "StatusesController"
}
}
})
.state('tab.status', {
url: "/statuses/:statusid",
views: {
'tab-statuses': {
templateUrl: "templates/status.html",
controller: 'StatusController'
}
}
})
状态控制器
app.controller('StatusesController', function ($scope, $filter, $state, $ionicListDelegate, $ionicActionSheet, StatusesService) {
$scope.statuses = [];
var ref = new Firebase("https://app85.firebaseio.com/statuses");
ref.on("child_added", function(snapshot, prevChildKey) {
var status = snapshot.val();
$scope.statuses.push(status);
});
})
statuses.html
<ion-item ng-repeat="status in statuses" href="#/tab/statuses/{{status.$id}}" class="customItemSize mlSmallerFont item-icon-left item-icon-right">
<i class="icon ion-ios-person-outline"></i>
{{ status.update }}
</ion-item>
您似乎是从 AngularFire 借鉴了一些想法,但没有实现它们的代码。因为它目前是 HTML 中的 {{status.$id}}
没有价值。
要解决这个问题,您应该使用 AngularFire 或在控制器中填充 $id
:
ref.on("child_added", function(snapshot, prevChildKey) {
var status = snapshot.val();
status['$id'] = snapshot.key();
$scope.statuses.push(status);
});
请注意,这仅在 snapshot.val()
是一个对象时有效(因此当它是原始对象时无效)。但由于您的代码段就是这种情况,所以这应该有效。
我使用 child_added 和 ng-repeat 来显示状态列表,这部分工作正常,但是当我点击列表中的一个状态时,我被发送到 tab/statuses/而不是转到 tab/statuses/:statusid。任何帮助将不胜感激。
app.js
.state('tab.statuses', {
url: "/statuses",
views: {
'tab-statuses': {
templateUrl: "templates/statuses.html",
controller: "StatusesController"
}
}
})
.state('tab.status', {
url: "/statuses/:statusid",
views: {
'tab-statuses': {
templateUrl: "templates/status.html",
controller: 'StatusController'
}
}
})
状态控制器
app.controller('StatusesController', function ($scope, $filter, $state, $ionicListDelegate, $ionicActionSheet, StatusesService) {
$scope.statuses = [];
var ref = new Firebase("https://app85.firebaseio.com/statuses");
ref.on("child_added", function(snapshot, prevChildKey) {
var status = snapshot.val();
$scope.statuses.push(status);
});
})
statuses.html
<ion-item ng-repeat="status in statuses" href="#/tab/statuses/{{status.$id}}" class="customItemSize mlSmallerFont item-icon-left item-icon-right">
<i class="icon ion-ios-person-outline"></i>
{{ status.update }}
</ion-item>
您似乎是从 AngularFire 借鉴了一些想法,但没有实现它们的代码。因为它目前是 HTML 中的 {{status.$id}}
没有价值。
要解决这个问题,您应该使用 AngularFire 或在控制器中填充 $id
:
ref.on("child_added", function(snapshot, prevChildKey) {
var status = snapshot.val();
status['$id'] = snapshot.key();
$scope.statuses.push(status);
});
请注意,这仅在 snapshot.val()
是一个对象时有效(因此当它是原始对象时无效)。但由于您的代码段就是这种情况,所以这应该有效。