如何将我们的控件从版本1.6.1升级到1.8.1

时间:2014-12-05 06:41:52

标签: ember.js

我刚刚引用了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中使用它们?是否有一些快速解决方案,或者我们是否需要创建组件?

2 个答案:

答案 0 :(得分:2)

如果视图是App.TextfieldView,@ NicholasJohn16提到的内容是真的,但是我假设Komodo.Controls来自多个名称空间,即KomodoKomodo.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}}
....

3. 依赖注入和服务查找http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/#toc_dependency-injection-with-code-register-inject-code

中注册容器中的控件

例如,

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。应该像更新模板一样简单,以匹配新语法。