[英]Ember.js model- and setupController-hook with nested routes
我目前正在評估Ember.js,因此正在構建一個小型示例應用程序。 目前,到目前為止一切都進展順利,但是現在我似乎無法解決我的最后一個小問題。
當我通過路線影片正常訪問該應用程序時,一切都會按預期進行。 顯示電影列表。 現在,當我單擊影片時,影片的詳細信息通過位於影片列表下方的setupController
鈎子加載。 一切都很好。
這是我的問題:我希望能夠直接通過url訪問影片詳細信息,但是在這種情況下,會以某種方式觸發另一個請求來獲取影片詳細信息,其值為undefinded
。 據我了解,這是model
掛鈎。
我只能猜測,但是我認為這是正在執行的model
掛鈎。
有人可以指出我可能犯的明顯錯誤嗎? 另一方面,我到目前為止編寫的代碼是否“正確”? 還是有更好的方法呢?
(我知道我用來渲染膠片細節的不好方法。我將刪除{{#each}}
標簽,並更改將響應分配給film
變量的方式。
這里是示例應用程序的鏈接: http : //jsbin.com/ewiN/1#/films
UPDATE
好吧,現在我真的很困惑。 我幾乎可以正常工作了,希望有人可以向我指出,因為這是一個簡單的任務,但似乎很難完全不了解余燼,這似乎是不可能的...通過url訪問該應用程序時,僅當我將其刪除時,它才有效setupController
掛鈎。 但我需要一個鈎子,加載FilmDetails
上點擊到鏈接到正確加載FilmDetails
。
http://jsbin.com/ewiN/16#/films/tt0100669
非常感謝您的反饋! 問候雷托
而不是使用jQuery.getJSON
,請使用Ember.RSVP.Promise
,因為內部余燼使用此promise API而不是jquery。 我認為同時使用這兩種方法可能會導致不一致。
return new Ember.RSVP.Promise(function(resolve, reject) {
var films = [];
jQuery.getJSON("http://www.omdbapi.com/?s=" + searchTerm, function (response) {
$.each(response.Search, function (index, value) {
films.pushObject(Kitag.Films.create({
title: value.Title,
id: value.imdbID
}));
});
}).fail(reject);
resolve(films);
});
因為我們要返回一個Promise而不是一個對象,所以我們需要使用模型掛鈎,因為它要等到Promise解析為呈現模板之后再進行。
Kitag.FilmsRoute = Ember.Route.extend({
model: function() {
return Kitag.Films.getMovies('spiderman');
}
});
我刪除了Kitag.FilmRoute
,因為期望的是:
Kitag.FilmRoute = Ember.Route.extend({
model: function(params) {
return Kitag.Film.find(params.id)
},
serialize: function (model) {
return { film_id: model.get("id") };
}
});
是默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.