- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个小型 Angular Web 应用程序,在加载数据时遇到了问题。我使用 Firebase 作为数据源,并发现 AngularFire 项目听起来不错。但是,我无法控制数据的显示方式。
首先,我尝试使用常规隐式同步:
angularFire(ref, $scope, 'items');
当我在 View 中使用模型 $items 时,它工作正常并且显示了所有数据。但是,当数据从 Firebase 数据源到达时,它的格式不符合 View 支持的方式,因此我需要在显示数据之前对数据进行一些额外的结构更改。问题是,我不知道数据何时完全加载。我尝试将 $watch 分配给 $items,但调用得太早了。
所以,我继续尝试使用 angularfireCollection 代替:
$scope.items = angularFireCollection(new Firebase(url), optionalCallbackOnInitialLoad);
文档不太清楚“OptionalCallbackOnInitialLoad”的作用以及调用时间,但尝试访问 $items 集合中的第一项将抛出错误(“Uncaught TypeError: Cannot read property '0' of未定义”)。
我尝试添加一个按钮,并在按钮的点击处理程序中记录了 $items 中第一个项目的内容,它有效:
console.log($scope.items[0]);
就在那里!我的 Firebase 中的第一个对象显示没有任何错误...唯一的问题是我必须单击一个按钮才能到达那里。
那么,有谁知道我如何知道何时加载所有数据,然后然后将其分配给 $scope 变量以显示在我的 View 中?或者还有其他办法吗?
我的 Controller :
app.controller('MyController', ['$scope', 'angularFireCollection',
function MyController($scope, angularFireCollection) {
$scope.start = function()
{
var ref = new Firebase('https://url.firebaseio.com/days');
console.log("start");
console.log("before load?");
$scope.items = angularFireCollection(ref, function()
{
console.log("loaded?");
console.log($scope.items[0]); //undefined
});
console.log("start() out");
};
$scope.start();
//wait for changes
$scope.$watch('items', function() {
console.log("items watch");
console.log($scope.items[0]); //undefined
});
$scope.testData = function()
{
console.log($scope.items[0].properties); //not undefined
};
}
]);
我的看法:
<button ng-click="testData()">Is the data loaded yet?</button>
提前致谢!
最佳答案
So, does anyone know how I can know when all the data has been loaded and then assign it to a $scope variable to be displayed in my view? Or is there another way?
请记住,所有 Firebase 调用都是异步的。许多问题的发生是因为您试图访问尚不存在的元素。按钮单击对您有效的原因是您在成功加载按钮(并访问元素)后单击了按钮。
对于optionalCallbackOnInitialLoad
,这是一个在angularFireCollection
初始加载完成后将执行的函数。顾名思义,它是可选的,这意味着如果您不想,则不必提供回调函数。
您可以使用它并指定加载后要执行的函数,也可以使用 $q
Promise 或您喜欢的其他 Promise 库。我偏爱kriskowal's Q我。我建议您阅读一些有关异步 JavaScript 的内容,以便您可以更深入地了解其中的一些问题。
请注意:
$scope.items = angularFireCollection(ref, function()
{
console.log("loaded?");
console.log($scope.items[0]); //undefined
});
确实正确指定了回调函数,但$scope.items
直到您运行回调之后才被分配。所以,它仍然不会存在。
如果您只想查看 $scope.items
何时加载,您可以尝试如下操作:
$scope.$watch('items', function (items) {
console.log(items)
});
关于angularjs - Angular 火集合 : know when the data is fully loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946064/
我正在使用 COM 库 RCWs 。我一直发现最好的做法是在所有非托管资源超出范围之前手动释放它们并进行垃圾收集。我不希望这“减慢”我的应用程序的速度,并且我不在乎这实际上何时完成(如果有的话)在应用
我认为作为一个挑战,我应该编写一个基于 javascript 的游戏。我想要声音、图像和输入。模拟屏幕的背景(例如 640x480,其中包含我的所有图像)对于将页面的其余部分与“游戏”分开非常有用。我
在抓取网站的单个页面时,我使用 Beautiful Soup 取得了巨大成功,但我有一个新项目,我必须在其中检查大量网站,看看它们是否包含指向我网站的提及或链接。因此,我需要检查每个站点的整个站点。
我期待构建一个高度依赖地理数据的应用程序。 该应用程序将使用 HTML5 获取 GPS 数据的能力,并将进行诸如寻找最近的街道、寻找两点之间的最短路径等计算。我正在考虑使用 Google map 等平
我在使用 liquibase 时遇到问题。当我运行我的 J2EE 应用程序时,liquibase 告诉我: liquibase.exception.ValidationFailedException:
我的 iphone 上有一个应用程序,它允许我也可以通过 ftp 从我的 linux 桌面传输歌曲。应用显示主机地址为192.168.0.4并且要使用的端口是5021 .我可以从 filezilla
回答者已经知道的东西,但无论如何在这里展示我的思考过程: 从 HLL 到机器代码,这里有一组粗略的发生的事件(有链接器和其他东西,但现在让我们忽略它): HLL --> 编译器 --> 汇编器 ---
显然,下面的函数是不可能的,因为不可能永久地解开一个 IO 值(忽略 unsafePerformIO 或类似的): unwrapIO :: IO String -> String unwrapIO (
我在测试机器上安装了 Java 版本 45。高安全性设置表示无法在旧版本的 Java 上运行未签名或自签名的应用程序,事实上它无法运行自签名的小程序。 这个版本如何能够检测到它是旧版本?首次部署时它肯
怎么可能跳过 SemaphoreCI 上的一些测试?换句话说,是否有可能知道我们何时对 Semaphore 运行特定测试? 最佳答案 SemaphoreCI 将 CI 环境变量设置为 true。 有关
我知道我可以使用 xcodebuild 启动应用程序的单元测试,但我想知道什么告诉应用程序在启动期间运行测试,它是发送给应用程序的特殊参数还是它为了运行测试(使用 XCTest)进行不同的编译? 最佳
我对 Joomla 相当陌生(我更喜欢使用 Wordpress),我有一个关于模块位置的问题。 模块可以知道它所处的位置吗?例如我可以做这样的事情: if(modulePosition =='left
我有一个简单的 Spring Boot 应用程序,它从 Kafka 读取并写入 Kafka。我写了一个 SpringBootTest使用 EmbeddedKafka测试这一切。 主要问题是:有时测试失
我想知道 R 对它运行的硬件/系统有什么了解。 例如,我知道使用“sessionInfo()”会发现一些事情。但是是否也可以检查计算机的 CPU/内存?是否可以为所使用的计算机设置一些唯一标识符? 动
我试图掌握 PHP 和 MYSQL 编程,但在看到示例后,我无法理解 mysql_fetch_row 如何知道要返回哪一行。例如: 在上面的代码中,echo $row[0]; 返回表中第一列的数据,
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我得到了一个 makefile,我将其修改为: ############################################ # Makefile using OCI (Oracle Ca
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
相关:What does casting do at compiler/machine level? 假设我有自定义类型。 A 型是 B 型的子类型。 最初,我的变量类型为 A 类型。然后我将其转换为
想到这里有个奇怪的问题。例如,假设您在服务器上部署了执行以下操作的代码: //GET request called when a URL is hit public void gETCalled(){
我是一名优秀的程序员,十分优秀!