Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 按名称查找视图类_Ember.js - Fatal编程技术网

Ember.js 按名称查找视图类

Ember.js 按名称查找视图类,ember.js,Ember.js,我知道Ember.View.views[someId]可以定位视图的“实例”。是否有类似的方法通过字符串值查找视图“类”?我有一种情况,列表中的一个项的值决定了哪个视图类被实例化并填充到容器视图中 App = Ember.Application.create(); App.TestView = Ember.View.extend({ ... }); App["TestView"].create(); ​ 您真的需要切换视图类吗,因为渲染肯定会基于项目的状态 我宁愿将视图的模板设置为有条件的

我知道
Ember.View.views[someId]
可以定位视图的“实例”。是否有类似的方法通过字符串值查找视图“类”?我有一种情况,列表中的一个项的值决定了哪个视图类被实例化并填充到容器视图中

App = Ember.Application.create();

App.TestView = Ember.View.extend({ ... });

App["TestView"].create();

您真的需要切换视图类吗,因为渲染肯定会基于项目的状态

我宁愿将视图的模板设置为有条件的,如下所示:

App.ItemView = Ember.View.extend({

  itemBinding: 'controller.content',

  templateName: function () {
    var kind = this.get('item.kind');
    return '%@_item_view'.fmt(kind);
  }.property('item.kind')
});
(这里,为了更清晰,我在视图中为项目添加了别名)

然后,您需要尽可能多的模板
kind
s。
例如:如果在
[valid,invalid]
中有
kind
的值,则会有两个模板:
有效的项目视图。把手
&
无效的项目视图。把手

应用程序。get('TestView')也可以工作。我认为这没什么区别,但也许只是更“余烬”嗯,也许,尽管我们为什么不使用App.set(“TestView”,Ember.View.extend({…}))?迈克,谢谢!在本例中,我在第一个页面上遇到了许多初始入口点中的一个,其中每个路径本身几乎就是一个完整的应用程序,有许多子页面。为了概念清晰,我将其保留为逻辑上不同且命名清晰的视图,每个视图都有自己的模板。但是你的建议会很管用的——谢谢你的展示。在任何情况下,由于新的路由器材料,设计正在重新进行一点。余烬中的好东西太多:=)