2015-11-09 57 views
1

我是ember.js的新手,並通過檢查ember.js應用程序的代碼庫來了解它。從ember.js中的控制器中檢索已計算的屬性

這是一個博客的應用程序,在路徑/routes/posts.js代碼獲取從控制器配備了兩個計算性能,

var currentPost = this.get('controller.currentPost'); 
var posts = this.get('controller.sortedPosts'); 

我知道ember.js推斷出很多東西,所以我認爲這controller指控制器/controllers/posts.js,我查看並找到了屬性sortedPosts的定義,但是沒有定義屬性currentPost,我插入了一行代碼console.log(currentPost),我可以看到在瀏覽器開發工具的控制檯選項卡中正在輸出正確的值,但我可以'弄清楚這個屬性是在哪裏定義的。

我試圖在ember.js官方文檔中找到答案,但沒有運氣。 我的問題是

  1. 確實ember.js確實是由文件名
  2. 推斷控制器/controllers/posts.js是燼甚至足夠聰明的自動加載模型currentPost

感謝。

回答

1

1)是的,如果文件在那裏,則ember會推斷出控制器爲/controllers/posts.js

2)當前帖子是控制器的計算屬性,它不是將模型加載爲currentPost

注意:Ember控制器正在折舊,以支持可路由的組件 - 所以對於新的應用程序,建議避免控制器不惜一切代價。

關於這一點和其他適應未來發展問題的更多信息,請參見:https://gist.github.com/samselikoff/1d7300ce59d216fdaf97

+0

感謝確認的第一個問題。至於第二個,我無法在控制器中找到該屬性'currentPost'的定義,該屬性是否可以在其他地方定義?或者它是由ember.js隱式定義的? – eric

+0

你會發佈一個鏈接到你正在使用的代碼嗎? (假設它是一個git repo) –

+0

[/routes/posts.js](https://github.com/sunh3/Ghost/blob/master/core/client/app/routes/posts.js)第39,40行檢索有產者。 [controllers/posts.js](https://github.com/sunh3/Ghost/blob/master/core/client/app/controllers/posts.js)第72行是sortedPosts的定義。我找不到currentPost,但它仍然有效 – eric

相關問題