使用Ember.js手柄模板,如何链接到对象的完整URL以强制模型重新加载?

时间:2013-07-09 21:04:40

标签: ember.js handlebars.js

我目前有这个模板

{{#each model}}
    {{#linkTo object this}}{{name}}{{/linkTo}}
{{/each}}

创建

<a href="path/#/objectid"/>

这不会导致模型重新加载,但使用该URL进行页面刷新。 如何使用完整的网址在我的模板中建立链接?

<a href="path/objects/{{id}}">{{name}}</> 

不起作用,因为{{id}}似乎没有在引号内完全解析,所以我得到类似的内容:

path/objects/<script id="metamorph-5-start....

我看到了调整setupController的答案,但是如果我不想每次都重新加载模型怎么办?从模板方面对此进行控制会很好,即在不需要重新加载时使用{{#linkTo}},在需要重新加载时使用其他技巧。有没有一种简单的方法可以根据车把中的模型参数创建完整的URL?

2 个答案:

答案 0 :(得分:3)

这可能不是您问题的完整解决方案,但对于此部分:

  

不起作用,因为{{id}}似乎没有在引号内完全解析,所以我得到类似的内容:

有帮助:

<a href="path/objects/{{unbound id}}">{{name}}</>

使用unbound不会将脚本变形标记放在属性周围。

希望它可以帮助您解决问题。

答案 1 :(得分:0)

我想通了 - 尽管没有更改网址,所以我仍然使用正常的{{#linkTo...}}

How to reload an ember data record?中所述,可以使用record.reload() - 它对我有用:

App.ObjectRoute = Ember.Route.extend({
...
  setupController: function(controller, model) {
      var record = App.Object.find(model.id);
      record.reload();
      controller.set("model", record);
  },
});

如果使用修改后的网址有一个简单的替代方案,我仍然有兴趣找到答案。