从嵌套函数中获取返回值
Get a return from nested function
我尝试检查(在一个模板的助手),如果一个图像存在-通过给定的url。
如果文件存在,我想将空格设置为此url。如果不存在,则返回另一个url。
我的问题是得到返回的onload-/onerror-函数:
Template.backgroundImage.helpers({
image: function() {
var url = '/background/'+file+'.jpg';
var img = new Image();
img.onload = function() { return url; }
img.onerror = function() { return '/background/image.jpg'; }
img.src = url;
}
});
<template name="backgroundImage">
<img src="{{image}}">
</template>
你可以使用Promise:
Template.backgroundImage.helpers({
image: function() {
return new Promise(function(resolve) {
var img = new Image();
var url = '/background/' + file + '.jpg';
img.addEventListener('load', function() { resolve(url); });
img.addEventListener('error', function() { resolve('/background/image.jpg'); });
img.src = url;
});
}
});
你可以使用Template onRendered回调来更新你的图像SRC:
Template.backgroundImage.helpers({
image: function() {
return '/background/'+file+'.jpg';
}
});
Template.backgroundImage.onRendered(function(){
var $img = this.$('img'); //Whatever your selector is, not sure if this.$ works in onRendered though
// "one" makes sure event is only fired once, see below
$img.one("error", function() {
$img.attr('src','/background/image.jpg')
});
// If image was loaded, reload it
// This is usually used to check if images were loaded from cache
// but as you only want to track errors, it's probably unnecessary
if($img.get().complete) {
$img.load();
}
})
相关文章:
- 从ID Jquery类获取返回值时出现问题
- 从 html.append 追加的 html 下拉列表中获取返回值
- 如何从Ajax请求中获取返回值并将其分配到元素中
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 从回调函数 -JQuery 获取返回值
- 尝试从 javascript 模块获取返回值
- 从 WebKit / JavaScriptCore 中的 Javascript 获取返回值
- 通过 ajax 获取返回值
- jquery ajax 获取返回值
- 使用GWT'从java方法获取返回值;s JSNI
- 使用jQuery和AJAX调用PHP类方法并获取返回值
- 从函数中获取返回值是d
- 可以't在chrome控制台中从带名称空间的javascript函数获取返回值
- 如何获取返回值的内容
- 如何从IJavaScriptExecutor中获取返回值
- 使用Odoo8从javascript中的调用函数获取返回值
- 如何从方法中的方法获取返回值
- 如何从确认弹出警报中获取返回值
- 可以't从节点模块中的异步瀑布中获取返回值