由AJAX加载并在视图中更新的EmberJS的特定属性
我在尝试与我们的合作伙伴建立集成时遇到了一个问题。他们会提交一个图片URL作为GET变量,我显然不想直接打印出来。提交的图像URL将通过AJAX提交回我们的服务器,以便进行清理、返回和更新 这里我想做的是,当模型加载时,我想显示一个占位符图像,当服务器完成卫生检查时,它将返回要设置为模板图像源的URL(相同或另一个占位符) 现在,问题是我不知道如何让Ember监听此事件的更新。我试图使用由AJAX加载并在视图中更新的EmberJS的特定属性,ajax,ember.js,Ajax,Ember.js,我在尝试与我们的合作伙伴建立集成时遇到了一个问题。他们会提交一个图片URL作为GET变量,我显然不想直接打印出来。提交的图像URL将通过AJAX提交回我们的服务器,以便进行清理、返回和更新 这里我想做的是,当模型加载时,我想显示一个占位符图像,当服务器完成卫生检查时,它将返回要设置为模板图像源的URL(相同或另一个占位符) 现在,问题是我不知道如何让Ember监听此事件的更新。我试图使用观察,但显然,这在路线中不可用。以下是我当前的代码: 路线 MyApp.PartnerRoute=Ember.
观察
,但显然,这在路线中不可用。以下是我当前的代码:
路线
MyApp.PartnerRoute=Ember.Route.extend({
imageUrl:“/img/placeholder.png”;
getImageUrl:函数(imageUrlToCheck){
实例=此;
$.ajax({
url:“/ajax/get image url”,
类型:“post”,
数据:{
“imageUrl”:imageUrlToCheck
},
成功:功能(响应){
如果(response.status==0){
set(“imageUrl”,response.data.imageUrl);
}
}
});
},
//余烬更新属性。
imageUrlDidChange:function(){
this.get(“imageUrl”);
}。注意到(“imageUrl”),
型号:功能(参数){
this.getImageUrl(params.imageUrl);
返回{
标题:“欢迎!”,
imageUrl:this.imageUrl
}
}
});
看法
我一点也不确定如何做到这一点。我走错方向了吗?感谢您的帮助
谢谢你抽出时间
致以最良好的祝愿,
迪姆霍尔特
另外,我已经从更大的对象中提取了适用的代码片段,因此如果有任何打字错误、缺少逗号等,这是由于复制粘贴造成的,不适用于实际代码
编辑:
值得注意的是,由于遗留功能我还没有重写,我被迫关闭了余烬扩展原型。我想这是问题的主要原因
自从我写了这篇文章之后,我也开始使用固定模型,而不是试图直接使用路由。您需要使用setter
您好,kingpin2k,谢谢您的回复。问题不是我没有得到答复,而是我无法观察结果。setter的工作方式与我今天的工作方式相同,但由于我必须关闭Ember extended Prototype,因此在返回AJAX结果时模板不会更新……我给出的示例不依赖于扩展,并且您没有更新引用,而是返回了一个具有新字符串的新模型(即不再引用此字符串)。对!我一定做错了什么。当我再次尝试时,它现在起作用了。非常感谢您的时间和令人敬畏的例子!
<script type="text/x-handlebars" data-template-name="partner">
<h1>{{heading}}</h1>
<img {{bind-attr src=imageUrl}} />
</script>
Uncaught TypeError: Object function () {
this.get("imageUrl");
} has no method 'observes'
model: function(params) {
var model = {
heading: "Welcome!",
imageUrl: this.imageUrl
};
this.getImageUrl(params.imageUrl).then(function(result){
Em.set(model, 'imageUrl', result.imageUrl);
});
return model;
}