在动态路线中使用的空阵列模型

时间:2013-10-02 18:05:43

标签: javascript ember.js url-routing


当转换为使用空数组作为模型的动态路径时,Ember似乎将其​​与undefined相关联。

因此,如果这是模板:

{{#linkTo dynamic arrayProxy}}link{{/linkTo}}

这是路线定义:

DynamicRoute = Ember.Route.create(function() {
  model: function(params) {
    return this.modelFor("parent").find(params.name);
  },

  serialize: function(model) {
    return { name: model.get("name") };
  }
});

arrayProxy[]Ember.ArrayProxy.create(content: [])时, 点击链接后:
当然,模型钩子不会被调用。
serialize钩子将undefined作为model,无论ArrayProxy是一个有自己属性的有效Ember对象。

是否有人知道如何强制执行ember处理空数组与undefined不同?

2 个答案:

答案 0 :(得分:0)

不确定是否是拼写错误,但您错过了模型钩子中的返回:

model: function(params) {
  return this.modelFor("parent").find(params.name);
},

如果没有这个,serialize将始终收到undefined作为模型变量。

Serialize也需要返回:

serialize: function(model) {
  return { name: model.get("name"); }
}

答案 1 :(得分:0)

这是我的错...... 显然,该链接嵌套在以下if块下的模板中:

{{#if arrayProxy}}
  {{#linkTo dynamic arrayProxy}}link{{/linkTo}}
{{else}}      
  {{#linkTo dynamic}}link{{/linkTo}}
{{/if}}

由于arrayProxy是一个空的ArrayProxy,因此调用else部分并呈现第二个linkTo。
因此,DynamicRoute' serialize个钩子将undefined作为model参数。