【发布时间】:2013-12-19 02:50:09
【问题描述】:
我现在已经玩了一点,但无法理解它:
(使用 angular 1.2.2、angularFire 0.5.0 和最新的 ng-grid)
所以我有一个 firebase,我正在使用 angularFire 将我的数据提取到一个 ng-grid 组件中,如下所示:
//First I go get my data, in this case something called 'grades' from ..../db/grades
var promise = angularFire(new Firebase($scope.fireBaseUrl), $scope, 'grades');
//When they're fetched I start up a watcher
promise.then(function(grades) {
startWatchGrade($scope, filterFilter, appSettings);
});
//Then I bind that grades as a datasource to my ng-grid
$scope.gridOptions = {
data: 'grades',
enableCellSelection: false,
enableRowSelection: true,
etc....,
效果很好,我已经完成了将新项目添加到“等级”(推送)和删除项目(拼接)的控件,并且所有内容都很好地反映到了 ng-grid。像这样:
//Adding new like this is ok
$scope.grades.push({some-new-data-here});
//Deleting old like this is ok
$scope.grades.splice(row.rowIndex, 1);
但是这种方法会自动生成基于 int 的 Firebase 键,这些键在修改时会一直发生变化,所以我想控制这些键,所以我更改了添加要使用的项目:
var fbRef = new Firebase($scope.fireBaseUrl);
var newRef = fbRef.push({some-items-here});
一切正常,使用我的非整数 id 将数据存储到 firebase 中,但它不再绑定到 ng-grid。将“成绩”转储到控制台会显示所有正在返回的行,但它不会显示在 ng-grid 中。
简而言之:angularFire 生成的基于整数的索引在 ng-grid 中可以正常工作,而由 firebase.push 创建的自定义字母数字则不行。
我希望这听起来不会太神秘。想过做一个小提琴,但让我们希望这是我忽略的一些“问题”并且很容易解决。如果没有,我会尝试修补一个。
谢谢!
【问题讨论】:
-
角/角火版本?提示:1.2+ 有更好的相等性检查。另外,在这里尝试使用 angularFireCollection,您可能会更幸运地使用更新的数组(集合)而不是更新时替换的对象(angularFire)。
-
谢谢,下次我在开发环境中时会试一试。
-
不走运,小提琴就完美了。
-
嘿蒂姆,查看 angularFire-seed tag 0.3 获取 0.3 的 angularFire 和 angularFireCollection 示例,或查看 the latest release 获取 $firebase 示例。
-
可能是我,但我完全错过了您在第二种方法中如何绑定到您的“成绩”模型?
标签: angularjs firebase angular-ui ng-grid angularfire