现在,这变得非常非常烦人。。。我在这个问题上停留了很长时间…问题是加载速度越来越慢。.这是我的代码,我将在底部对其进行解释:
app.controller('chatCtrl', ["$scope", function($scope) {
var ref = new Firebase('MYFIREBASEAPP')
$scope.usernameProfile = ''
$scope.imageProfile = ''
ref.onAuth(function(authData) {
ref.child("Users Auth Info").child(authData.uid).on("value", function(snapshot) {
$scope.usernameProfile = snapshot.val().Username;
$scope.imageProfile = snapshot.val().Image
console.log(snapshot.val().Image)
console.log(snapshot.val())
console.log($scope.usernameProfile)
var username = $scope.usernameProfile
console.log($scope.imageProfile)
})
})
console.log($scope.usernameProfile)
console.log($scope.imageProfile)
}])
在这里,我从用户数据中获取usernameProfile和imageProfile。这里的问题是它加载了wayyy来减慢速度..当我尝试通过传递使其呈现为html时:
<img id="profileImage" ng-src="{{imageProfile }}" >
图像变为空白..由于某种原因,html剂量识别ng模型…在我上面的代码中,底部的那些也首先被记录,然后其他的都在snapshot.val()中记录了。请帮助我。
。 谢谢
尝试了这个…仍然可以正常工作…
var ref = new Firebase('https://sparke.firebaseio.com/')
var syncObject = $firebaseObject(ref);
ref.onAuth(function(authData){
$scope.profile = $firebaseObject(ref.child('UsersAuthInfo').child(authData.uid).child("Image"));
$scope.profile.$loaded().then(function() {
console.log($scope.profile.$value);
$scope.imageProfile = $scope.profile.$value
});
})
这个重要的工作:
ref.onAuth(function(authData) {
console.log("Good?)
ref.child("UsersAuthInfo").child(authData.uid).on("value", function(snapshot) {
$timeout(function() {
$scope.usernameProfile = snapshot.val().Username;
$scope.imageProfile = snapshot.val().Image
console.log(snapshot.val())
});
})
})
console.log($scope.usernameProfile)
第一个表示Good的代码,首先执行,然后最底层的代码,然后执行.child()内部的代码。
好吧,坦白。在开始之前,我只是删除了引号并使之更加简单。
让我们开始讨论$ timeout的问题…
因此,当我为原始的插件(更简单的版本…)测试$ timeout时,它的工作原理确实很好,这是代码:
ref.child('Image').on("value", function(snapshot) {
// tell AngularJS that we're going to make changes to $scope
$timeout(function(){
$scope.image = snapshot.val();
console.log(snapshot.val())
});
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
现在随着超时,当我尝试将其实现到我的原始应用程序时,由于某种原因,它并没有不幸地工作……这是该代码..:
ref.onAuth(function(authData){
ref.child("UsersAuthInfo").child(authData.uid).on("value", function(snapshot) {
// tell AngularJS that we're going to make changes to $scope
$timeout(function(){
$scope.imageProfile = snapshot.val().Image;
console.log(snapshot.val())
});
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
})
现在使用$ firebaseObject …
当我输入以下代码时,$ firebaseObject甚至无法用于我的更简单版本的插件:
$scope.image = $firebaseObject(ref.child('Image'));
它给了我一张空白图片…表示URL不正确时的默认图片…而且我已经注意到问题在于当我使用console.log()$ scope.image这样的时候:
console.log($scope.image)
我得到一个对象…而不是值。对象是这样的:
$$conf: Object
$id: "Image"
$priority: null
$value: "http://png.clipart.me/graphics/thumbs/151/man-avatar-profile-picture-vector_151265384.jpg"
__proto__: Object
两种方法中的帮助将不胜感激
好的,现在我设法将图像(我向您展示的简单的插头)放在了插头上……这是代码:
var obj = $firebaseObject(ref);
obj.$loaded(
function(data) {
$scope.image = data.Image
},
function(error) {
console.error("Error:", error);
}
);
但是,当我再次尝试在我的实际应用程序上执行此操作时,即时通讯仍在正常工作!这是我在正在运行的应用程序上的代码…:
ref.onAuth(function(authData){
var obj = $firebaseObject(ref.child("UsersAuthInfo").child(authData.uid));
obj.$loaded(
function(data) {
$scope.imageProfile = data.Image
console.log(data.Image)
},
function(error) {
console.error("Error:", error);
}
);
})
帮助将不胜感激!
Firebase异步加载数据,这就是为什么必须附加一个回调函数的原因:
ref.onAuth(function(authData) {
ref.child("Users Auth Info").child(authData.uid).on("value", function(snapshot) {
$scope.usernameProfile = snapshot.val().Username;
$scope.imageProfile = snapshot.val().Image
})
})
问题在于,在执行回调时,AngularJS不再侦听更改。因此,您的console.log
语句可能会写出正确的值,将新值绑定到$scope
,但是AngularJS根本不会更新视图。
可以通过告诉AngularJS在下一个更新周期中更新视图来解决此问题:
ref.onAuth(function(authData) {
ref.child("Users Auth Info").child(authData.uid).on("value", function(snapshot) {
$timeout(function() {
$scope.usernameProfile = snapshot.val().Username;
$scope.imageProfile = snapshot.val().Image
});
})
})
或者,您可以使用AngularFire来完成相同的操作。
来自Plunkr的最小代码是:
var ref = new Firebase('https://angularfireauthtut.firebaseio.com/')
$timeout(function(){
ref.child('Image').on("value", function(snapshot) {
console.log(snapshot.val());
$scope.image = snapshot.val();
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
})
console.log("For some reason this gets logged first?")
console.log($scope.image)
对于任何下一个问题,请使 该 代码成为您问题 中 的唯一代码,我们可以更快地解决问题。
这里有两个问题,一个问题在输出中可见console.log(snapshot.val());
:
‘ http://png.clipart.me/graphics/thumbs/151/man-avatar-profile-picture-
vector_151265384.jpg
‘
看到那里的那些单引号吗?这些不应该在那里,因为您的HTML现在最终像这样:
<img src="'http://png.clipart.me/graphics/thumbs/151/man-avatar-profile-picture-vector_151265384.jpg''" />
src用双引号和单引号引起来,这意味着它不再是有效的URL。
正确的解决方案是存储不带单引号的图像。但是现在,这也将起作用:
var imgUrl = snapshot.val();
imgUrl = imgUrl.substring(1, imgUrl.length-1);
$scope.image = imgUrl;
第二个问题是您无法向AngularJS通知新图像。您将放$timeout
错了层次,它必须位于值回调中:
ref.child('Image').on("value", function(snapshot) {
// tell AngularJS that we're going to make changes to $scope
$timeout(function(){
var imgUrl = snapshot.val();
imgUrl = imgUrl.substring(1, imgUrl.length-1);
console.log(imgUrl);
$scope.image = imgUrl;
});
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
此代码段有效并显示您的图像。
修复数据以使该Image
值不再包含单引号后,您可以使用AngularFire摆脱大部分此类问题:
var ref = new Firebase('https://angularfireauthtut.firebaseio.com/');
$scope.image = $firebaseObject(ref.child('Image'));
我强烈建议您使用该库。但是,如果不这样做,请$timeout()
继续阅读AngularFire的摘要循环。只复制我的工作片段而不了解这些内容,一定会很快导致同样令人沮丧的体验。
更新EDIT3
由于数据库仅包含字符串,因此需要在HTML中使用它:
<img ng-src="{{image.$value}}"/>
更新的工作插件:http
://plnkr.co/edit/NlDsxdCqUSboZci6T7ES?p=preview
问题内容: 我正在使用以下代码: xlsx文件本身具有25,000行,每行包含500列的内容。在调试过程中,我看到创建XSSFWorkbook的第三行需要很长时间(1小时!)来完成此语句。 有没有更好的方法来访问原始xlsx文件的值? 问题答案: 首先,当您有文件时,不要从InputStream加载XSSFWorkbook!使用InputStream需要将所有内容缓冲到内存中,这会占用空间并占用时
本文向大家介绍说出三种减少页面加载的方法(加载时间指感知的时间或实际加载的时间)相关面试题,主要包含被问及说出三种减少页面加载的方法(加载时间指感知的时间或实际加载的时间)时的应答技巧和注意事项,需要的朋友参考一下 CSS Sprites; JS、CSS源码压缩、图片大小控制合适; 网页Gzip; CDN托管; data缓存 ; 图片服务器;
使用Network(网络)面板评估网站的网络性能。 Network(网络)面板记录在页面上有关每个网络操作的信息,包括详细的时序数据,HTTP请求和响应头,Cookie等。 TL;DR 使用Network(网络)面板记录和分析网络活动。 以聚合(所有类型)或单个资源类型查看负载信息。 过滤和排序资源的显示方式。 保存,复制和清除网络记录。 根据您的需要自定义Network(网络)面板。 Netwo
我正在尝试加载一个CVS,其中包含一个数据类型为“timestamp”的字段当我尝试将该数据加载到表中时,会出现以下错误: 谷歌。应用程序编程接口。果心例外情况。BadRequest:400 CSV表遇到太多错误,放弃。行:1;错误:1。 我知道这一列是问题所在,因为当我删除这一列时,数据上传不会出错。我应该如何上传时间戳。 我正在使用bigquery API,python客户端库。 我的数据如下
每当打开Hibernate会话时,我都想使用AsheJ添加一个过滤器。我创建了一个方面并为我自己的类测试了它,它起作用了,但是对于Hibernate会话它什么也不做。 我创建了一个META-INF/aop。资源中的xml: 当我开始我的程序时,我得到以下异常: 我遵循了这些教程: 教程1教程2 我发现我必须按照异常的指示传递JVM参数,所以我尝试在构建梯度中执行以下操作: 根据IntelliJ,a
我们正在尝试找到一个网站的Selenium WebDriver的页面加载时间。我们想要得到页面加载时间的多个屏幕/网页在网站,如登录和登录后,主屏幕等。 我们的driver.get()调用是针对登录URL的,