Javascript 动态路由中的空数组模型
Javascript 动态路由中的空数组模型,javascript,ember.js,url-routing,Javascript,Ember.js,Url Routing,当转换到以空数组作为模型的动态路由时,似乎余烬将其关联为未定义 因此,如果这是模板: {{#linkTo dynamic arrayProxy}}link{{/linkTo}} 这是路线定义: DynamicRoute = Ember.Route.create(function() { model: function(params) { return this.modelFor("parent").find(params.name); }, serialize: func
当转换到以空数组作为模型的动态路由时,似乎余烬将其关联为
未定义
因此,如果这是模板:
{{#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(内容:[])
时,
点击链接后:当然,模型钩子不会被调用
不管ArrayProxy是一个具有自己属性的有效成员对象,serialize钩子都将作为
模型获得未定义的
有人知道如何强制ember处理空数组而不是未定义的数组吗?不确定是否是输入错误,但您缺少模型挂钩中的返回:
model: function(params) {
return this.modelFor("parent").find(params.name);
},
如果没有此选项,序列化
将始终接收未定义的作为模型变量
序列化也需要返回:
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
部分并呈现第二个链接
因此,DynamicRoute
的serialize
hook将未定义
作为模型
参数。你说得对,对不起,我的问题中显然混合了一些咖啡脚本…:-)不幸的是,这不是问题所在。我认为您需要显示更多的代码。。。您是否有一个名为ParentRoute
的路由?模板的arrayProxy
属性在哪里定义?你的余烬版本是什么?我使用的是余烬1.0.0。在呈现模板后立即调用serialize钩子以推断链接到的href。无论如何都不会调用模型钩子,因此ParentRoute不是问题的一部分。您必须使用链接显示与模板相关的代码。