我正在使用一个 $routeProvider,它根据我的 firebase 数组中的条目 ID 制作页面。
.state('app.Ketel', {
url: '/ketels/:id',
views: {
'menuContent': {
templateUrl: 'templates/ketels/template.html',
controller: 'ketelsCtrl'
}
}
})
ketelapp.controller('ketelsCtrl', function ($scope, $routeParams, $stateParams, $state, firebaseService, $firebaseArray, $firebase){
$scope.ketels = firebaseService.all;
$scope.ketel = firebaseService.get($stateParams.id - 1);
})
我的 Firebase 数据树
ketels ->
1 --> name : blablabla;
brand : bla bla bla;
2 --> name : blablabla;
brand : bla bla bla;
现在我正在尝试制作一个脚本,以 id 格式将项目添加到数组
ketelapp.controller('pushCtrl', function ($scope, $firebaseArray, $firebase, $firebaseObject){
var id = 3;
var ref = new Firebase("https://url.firebaseio.com" + "/ketels/" + id);
// create a synchronized array
$scope.ketels = $firebaseArray(ref);
var ketels = $scope.ketels;
$scope.addMessage = function(name, brand, desc) {
$scope.ketels.$add({
name: name,
brand: brand,
desc: desc
});
};
})
现在我的数据添加了正确的 ID,但在数据树的更深处它仍然使用随机数据 key ,这会弄乱我的代码。
ketels ->
1 --> random key --> name : blablabla;
brand : bla bla bla;
2 --> random key --> name : blablabla;
brand : bla bla bla;
有什么方法可以禁止 firebase 使用他们自己自定义生成的数据 key 吗?
--编辑--
或另一种修复路由的方法
最佳答案
当然可以。
您正在调用 $firebaseArray.$add()
:
$scope.ketels.$add({...
这意味着您要求 Firebase 生成所谓的推送 ID。
如果你不想这样,你可以:
$scope.ketels.$ref().child('your-unique-id').set({...
请注意,Firebase recommends against using array indices in multi-user apps 有充分的理由.忽略那些后果自负。
关于json - angularfire 中的自定义数据树名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828507/