2013-10-02 18 views
1


當過渡到以空數組爲模型的動態路由時,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: []), 點擊鏈接後:
當然,模型鉤子不會被調用。
無論ArrayProxy是否具有自己的屬性,它是一個有效的Ember對象,serialize鉤子都將獲得undefined作爲model

有誰知道如何強制ember處理空數組與undefined不同嗎?

+0

我認爲你需要展示更多的代碼......你有一條叫做'ParentRoute'的路線嗎?哪裏定義了模板的'arrayProxy'屬性?你的燼寶版是什麼? –

+0

我正在使用Ember 1.0.0。 在渲染模板以推斷linkTo的href之後立即調用序列化鉤子。無論如何,模型鉤子都不會被調用,所以ParentRoute不是問題的一部分。 – Shany

+0

您必須使用linkTo來顯示與您的模板相關的代碼。 – mavilein

回答

0

這是我的錯...
顯然,鏈接被嵌套在模板下面if塊下:

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

由於arrayProxy是一個空的ArrayProxy,else部分被調用,第二個linkTo被渲染。
因此,DynamicRouteserialize鉤子獲得undefined作爲model參數。

0

不知道如果是一個錯字錯,但你缺少模型鉤回:如果沒有這個

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

,該serialize總會收到undefined作爲模型變量。

序列化所需要的回報太:

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

你是對的,我很抱歉,顯然混合了我的問題中的一點點咖啡::-) 不幸的是,這不是問題所在。 – Shany