关于Ember的行为以及是否在细节路线中调用模型钩子有点困惑

时间:2014-04-18 12:33:44

标签: ember.js

我正在学习一点Ember并尝试使用我们的一些数据来实现。我有以下几乎是一个主 - 详细信息,需要详细信息来进行一个将在模型钩子中实现的JSON调用:

 <script type='text/x-handlebars' data-template-name='inventoryperiods'>
   before loop
    {{#each}}
       <div>{{#link-to "ipshow" this}}{{id}}{{/link-to}}</div>
    {{/each}}
</script>
...
Inv.Router.map(function() {
  this.resource('inventoryperiods', {path: '/'});
  this.route('ipshow', {path: '/ip/:ip_id'});
});

Inv.InventoryperiodsRoute = Ember.Route.extend({
  model: function() {

    return [{id:1, name:"Frank"}, {id:2, name:"Allan"}];  
  }
});

Inv.IpshowRoute = Ember.Route.extend({
    model: function(params) {
        alert('within period detail model' + params.ip_id);
        var my_name="Jonathan " + params.ip_id;
        return {name:my_name};
    }
});

当我去&#39; /&#39; - 我得到了列表,但是当我认为应该调用模型钩子并给我“Jonathan 1&#39;”时,点击1给了我Frank。我知道我已经通过了这个,但似乎应该有一种方法告诉路线我需要的细节比该对象中存在的更多。

在jsbin:http://jsbin.com/qazoz/3/edit?html,output

如果我直接谈到Jonathan 1,请转到:http://jsbin.com/qazoz/3#/ip/1

我看到了这个讨论:Why isn't my ember.js route model being called?

  恩伯有一个假设,你不一定要打电话   模型钩子,如果你使用{{linkTo}}。在您使用的场所模板中   {{#linkTo&#39; place&#39; place}} {{place.name}} {{/ linkTo}}。你过世了   一个地方对象到你的路线。恩伯尔认为这是一样的   对象,执行模型钩子时会得到的对象。所以来自   余烬视图无需调用模型钩子。所以,如果你想   即使你使用linkTo执行检索逻辑,使用   setupController hook。

但是添加setupController似乎并没有改变这种行为。

1 个答案:

答案 0 :(得分:0)

所以似乎答案是传递id而不是链接中的对象 - 所以{{#link-to "ipshow" id}}{{id}}{{/link-to}}