动态路由中使用的空数组模型

Empty array model used in dynamic route

本文关键字:数组 模型 路由 动态      更新时间:2023-09-26


当过渡到以空数组作为模型的动态路由时,似乎 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: [])时,点击链接后:
当然,模型钩子不会被调用。序列化钩子将作为model undefined,无论ArrayProxy是一个具有自己属性的有效Ember对象。

有谁知道如何以不同于undefined的方式强制余烬处理空数组?

不确定是否是拼写错误,但您在模型钩子中缺少返回:

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

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

序列化也需要返回:

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

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

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

由于arrayProxy是一个空的 ArrayProxy,因此调用else部分并呈现第二个 linkTo。
因此,DynamicRouteserialize钩子被undefinedmodel参数。