我正在尝试通过使用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',以便小部件路由不会影响您的整体应用程序。用一个例子更新了我的答案.. –
这非常适合我的场景,我有一个小问题,可以有多个应用程序实例,并且会有使用此方法时需要注意的任何副作用/影响吗? –