2013-10-01 22 views
0

我正在幫助某人在學習Ember.js的同時構建一個非常簡單的應用程序。在Ember.js中掙扎着使用fixture數據 - 另外,如何在ember中輸出這個數據

最終,這將由一個API提供,但API仍在開發中,所以我想弄清楚如何使用Ember數據管理器來管理一系列葡萄酒。

的的jsfiddle是http://jsfiddle.net/YvmzN/5/

我想要做的是,當從列表中選擇一個品種,返回匹配的品種是葡萄酒的列表。但是,我沒有得到任何輸出。我在jsfiddle中從web inspector中得到了一些非常奇怪的錯誤,但是我沒有在本地得到任何錯誤,只是沒有葡萄酒出現在頁面上。

我似乎無法弄清楚流程,而且我無法從我的控制器App.WineRoute.model內輸出

console.log(this)
,所以我甚至無法分辨控制器是否被觸發(我猜測它不是)。

有人能指導我做什麼我在這裏做錯了,也許可以解釋什麼是在Ember中發生的結構以及如何調試?我認爲它應該去路由器 - >路由 - >控制器 - >模型 - >控制器 - >查看,但我似乎無法正確追蹤流量或看看爲什麼這是行不通的。

正如在JSfiddle中提到的,我目前從本地JSON文件中提取葡萄酒的列表,從長遠來看,我會從API中請求已經過濾的列表,但我仍想在這一點上知道如何做到這一點。

+1

你能指定一些你實際喜歡的應用嗎?我有點困惑,看着它。它是否應該展示基於品種選擇的葡萄酒?(流程更像這個路由器 - >路由 - >模型 - >控制器(裝飾模型) - >查看) – Kingpin2k

+0

謝謝丹尼爾,是的,我試圖根據選擇的品種顯示葡萄酒。我很抱歉,這並不明確。 – pedalpete

回答

2

這裏的答案的一部分,直到你有更多的信息:

爲了真正使用灰燼數據正確每條記錄都需要有一個ID。

App.Wine.FIXTURES =[ 
    { 
    id:0, 
    winery:"something hills", 
    designation:"label name", 
    varietal:"Merlot" 
    }, 
    { 
    id:1, 
    winery:"something stream", 
    designation:"label name 2", 
    varietal:"Merlot" 
    }, 
    { 
    id:2, 
    winery:"something grape", 
    designation:"label name 3", 
    varietal:"Syrah" 
    } 
]; 

Ember Data在版本13和1.0 beta之間引入了一系列變化。這是一個很好的閱讀(來自開發者解釋應該做什麼不同)。

https://github.com/emberjs/data/blob/master/TRANSITION.md

適配器是真正相關的,這裏是你應該如何定義你的適配器現在

App.ApplicationAdapter= DS.FixtureAdapter; 

我已經做了一些重大的重構,並說實話,我不是很熟悉酒,所以我可能會犯一些錯誤的術語或關係,但這裏有一個例子,你可以用它來解決。

http://jsfiddle.net/YvmzN/7/

而只是作爲一個有趣的方面說明,如果你調用transitionTo/transitionToRoute,並提供必要的路由的模型,你不打模型掛鉤。如果你沒有提供模型(或提供一個id),它會在適用的路線中碰到模型掛鉤(很確定有一個例子,我說過渡到葡萄酒,但只通過模型的品種,所以它擁有品種資源的模型,但不包括葡萄酒資源,所以它打到了葡萄酒模型的鉤子)。

+0

謝謝丹尼爾,我已經更新了jsfiddle,在葡萄酒中加入了ide,以及商店如何被引用,以及我如何嘗試檢索集合this.store.find('wine')'。我仍然沒有錯誤,沒有輸出。我覺得奇怪的是,你已經說過(在上面的註釋中)流程是路由器 - >路由 - >模型 - >控制器。在我的App.Wine.Route.model方法中,我試圖向控制檯輸出一些東西,但沒有顯示出來,所以出於某種原因沒有調用該方法。 – pedalpete

+1

見上面的jsfiddle,它顯示了一個後續的例子。注意,我欺騙並假裝設置了url(這只是因爲應用程序並不是真正要存儲所有隨機記錄的位置) – Kingpin2k