我刚刚引用了1.8.1版本,并立即受到以下错误的欢迎:
未捕获错误:解决了视图“Komodo.Controls.Button”上的问题 全球背景。传递要在容器上查找的视图名称 相反,例如{{view“select”}}。 http://emberjs.com/guides/deprecations#toc_global-lookup-of-views-since-1-81
对于我们的框架,我们创建了许多控件,它们的使用方式如下:
{{view Komodo.Controls.TextField ... }}
{{view Komodo.Controls.Select ... }}
{{view Komodo.Controls.CoreTextLabel ... }}
etc.
我们需要做什么w.r.t.我们的控制在v1.8.1中使用它们?是否有一些快速解决方案,或者我们是否需要创建组件?
答案 0 :(得分:2)
如果视图是App.TextfieldView
,@ NicholasJohn16提到的内容是真的,但是我假设Komodo.Controls
来自多个名称空间,即Komodo
和Komodo.Controls
,就像在单独的库中一样
在这种情况下,以下三种方法可行,
1。为每个控件编写一个帮助器。 (http://emberjs.com/guides/templates/writing-helpers/#toc_custom-view-helpers)
例如,
http://emberjs.jsbin.com/wayuwubemi/1/edit?html,js,output
<强> JS 强>
Ember.Handlebars.helper("komodo-textfield", Komodo.Controls.TextField);
<强> HBS 强>
....
{{komodo-textfield}}
....
2. :在视图或控制器中创建指向这些控件的属性。
例如,
http://emberjs.jsbin.com/rogufarute/1/edit?html,js,output
<强> JS 强>
App.IndexView = Em.View.extend({
komodoTField:Komodo.Controls.TextField
});
<强> HBS 强>
....
{{view view.komodoTField}}
....
例如,
http://emberjs.jsbin.com/jematokivu/1/edit?html,js,output
<强> JS 强>
App.register('view:komodoTField', Komodo.Controls.TextField);
<强> HBS 强>
....
{{view "komodoTField"}}
....
我将应用程序从1.5.1迁移到1.8.1时遵循的方法是1和2.
此外,我认为最好在这些情况下使用组件。
答案 1 :(得分:0)
您不再将视图实例传递给视图助手。相反,只是视图名称是这样的:
{{view "textfield"}}
视图定义为App.TextfieldView。应该像更新模板一样简单,以匹配新语法。