我正在嘗試通過使用appendTo方法嵌套視圖方案中的一個簡單事件處理機制& {{render}}
幫助器並引發'無法調用空方法查找「錯誤而載入Emberjs - 無法使用appendTo和{{render}}助手呈現嵌套視圖
的jsfiddle爲同 - Simple nested view event handling
還有一個現象是,如果我的應用程序模板寫{{render 'parent'}}
和Java腳本刪除父的創作,任何想法這一切工作正常?
我正在嘗試通過使用appendTo方法嵌套視圖方案中的一個簡單事件處理機制& {{render}}
幫助器並引發'無法調用空方法查找「錯誤而載入Emberjs - 無法使用appendTo和{{render}}助手呈現嵌套視圖
的jsfiddle爲同 - Simple nested view event handling
還有一個現象是,如果我的應用程序模板寫{{render 'parent'}}
和Java腳本刪除父的創作,任何想法這一切工作正常?
如何解決:
似乎沒有要任何東西不對您的意見或模板。如果您使用Ember路由器來管理視圖,而不是通過appendTo手動創建它們,它們將會工作。因此,而不是:
var view = App.ParentView.create({ controller: App.ParentController.create() });
view.appendTo('#dvViewRender');
使用路由器:
App.Router.map(function() {
this.route("parent", { path: "/" });
});
,並定義應用程序模板:
<script type="text/x-handlebars">{{outlet}}</script>
證明它!
工作小提琴這裏:http://jsfiddle.net/mgrassotti/vQpe6/1/
爲什麼工作?
render
幫助程序旨在用於Ember.Router託管視圖的上下文中。當您致電{{render "child"}}
時,ember會嘗試爲子模板查找適當的控制器類。
如果我真的想使用appendTo方法怎麼辦?
好的,但不能使用render
幫手。其他選項:
{{partial 'child'}}
將插入子模板,但不會將其連接到ChildView或ChildController
使用的視圖助手,它會插入App.ChildView,它的渲染它在上下文模板ParentController
使用的出口,然後手動連接它與App.ChildController
* UPDATE(基於COMMENT)*
由於這種動態和獨立的性質,我不能嵌入整個頁面佈局和在一個應用程序模板,因此,任何建議的部件在這種使用灰燼情景?
每個控件都可以是一個獨立的應用程序。每個人仍然有一個路由器來管理它的狀態,但通過設置history: none
路由器將不會連接到瀏覽器的網址。例如:
var Widget2App = Ember.Application.create({
rootElement: '#widget2',
history: 'none',
ApplicationView: Ember.View.extend({
templateName: 'widget2',
}),
ParentView: Ember.View.extend({
templateName: 'parent2',
表示1個第2個燼應用
更新例如:不使用路由器http://jsfiddle.net/mgrassotti/L6aVB/
感謝您的快速回復的原因很 1.我的應用程序是不是一個單一的網頁應用程序,它是一個ASP.NET MVC應用程序,它有自己的路由機制 2.我的應用程序有一種widgetized的UI,就像[iGoogle.com](http://www.google.com/ig)那裏的小工具獨立工作,他人的知識可以動態添加,刪除,重新定位。由於這種動態和獨立的特性,我不能將整個頁面佈局和小部件嵌入到一個應用程序模板中 因此,在這種情況下使用Ember的任何建議? –
沒問題。您仍然可以使用路由器,只需設置'history:none',以便小部件路由不會影響您的整體應用程序。用一個例子更新了我的答案.. –
這非常適合我的場景,我有一個小問題,可以有多個應用程序實例,並且會有使用此方法時需要注意的任何副作用/影響嗎? –