Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由AJAX加载并在视图中更新的EmberJS的特定属性_Ajax_Ember.js - Fatal编程技术网

由AJAX加载并在视图中更新的EmberJS的特定属性

由AJAX加载并在视图中更新的EmberJS的特定属性,ajax,ember.js,Ajax,Ember.js,我在尝试与我们的合作伙伴建立集成时遇到了一个问题。他们会提交一个图片URL作为GET变量,我显然不想直接打印出来。提交的图像URL将通过AJAX提交回我们的服务器,以便进行清理、返回和更新 这里我想做的是,当模型加载时,我想显示一个占位符图像,当服务器完成卫生检查时,它将返回要设置为模板图像源的URL(相同或另一个占位符) 现在,问题是我不知道如何让Ember监听此事件的更新。我试图使用观察,但显然,这在路线中不可用。以下是我当前的代码: 路线 MyApp.PartnerRoute=Ember.

我在尝试与我们的合作伙伴建立集成时遇到了一个问题。他们会提交一个图片URL作为GET变量,我显然不想直接打印出来。提交的图像URL将通过AJAX提交回我们的服务器,以便进行清理、返回和更新

这里我想做的是,当模型加载时,我想显示一个占位符图像,当服务器完成卫生检查时,它将返回要设置为模板图像源的URL(相同或另一个占位符)

现在,问题是我不知道如何让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;
}