2013-12-20 45 views
1

我正在構建允許自定義網站的應用程序。所以它看起來像這樣與Ember.js中的iframe通信

+-----------------+------------------------------------------+ 
| sidebar  |  Preview with editor     | 
+-----------------+------------------------------------------+ 
| show title [x] | iframe which shows a preview which is | 
| show logo [ ] | also a part of application with another | 
| chage color [x] | route and allows to add and delete  | 
|     | menu items        | 
|     |           | 
|     |           | 
+-----------------+------------------------------------------+ 

的問題是,我無法弄清楚如何對preview說 我們不希望顯示標題/節目標誌/變色/等。我想我們需要爲previeweditor使用相同的控制器,但我不知道如何共享控制器。

在Ember有沒有辦法做到這一點?

回答

1

,如果你想重用只是延長控制器它

App.EditorController = Em.ObjectController.extend({ 
    showTitle:true, 
    showLogo: true 
    //etc 
}); 

App.PreviewController = App.EditorController.extend({ 
    showTitle: false, 
    //etc 
}); 

除非你的意思是你需要從另一個控制器獲取信息,那麼您要使用needs

http://emberjs.com/api/classes/Ember.ArrayController.html#property_needs

+1

是,我嘗試過這個。問題是,iframe運行絕對新的燼應用程序。所以我現在需要在兩個應用程序之間共享數據......有沒有可能? – DaZzz

+0

抱歉Pain Meds讓我有點緊張,你需要在兩個應用程序之間手動更新值。你可以使用'App .__ container __。lookup('controller:editor')來外部訪問控制器' – Kingpin2k

+1

你也可以使用jquery的觸發器連接一些通信,並將一個自定義事件連接到控制器中的方法,它們都相當醜陋我的想法是。編號可能是第一個,最容易遵循的代碼。 – Kingpin2k