Ember.js 将视图层次结构从ember-0.9.8.1移植到ember-1.0.0-rc.6

Ember.js 将视图层次结构从ember-0.9.8.1移植到ember-1.0.0-rc.6,ember.js,Ember.js,我无法理解这件事。我已经从这个(图像预览+上传的展示)开始,它正在使用ember-0.9.8.1,我正在尝试让它在中使用ember-1.0.0-rc.6 这是导致问题的相关部分: <script type="text/x-handlebars"> {{#view Ember.View contentBinding="App.myModel"}} {{#view App.PreviewUploadImage name="logo_image" contentBind

我无法理解这件事。我已经从这个(图像预览+上传的展示)开始,它正在使用
ember-0.9.8.1
,我正在尝试让它在中使用
ember-1.0.0-rc.6

这是导致问题的相关部分:

<script type="text/x-handlebars">
    {{#view Ember.View contentBinding="App.myModel"}}
      {{#view App.PreviewUploadImage name="logo_image" contentBinding="content"}}
        {{view fileField}}
        {{view previewImageView width="200" height="100" srcBinding="content.myModel_src"}}
      {{/view}}
    {{/view}}
</script>
正如您在控制台中看到的错误:

Assertion failed: Unable to find view at path 'fileField'
Assertion failed: You must pass a view to the #view helper, not fileField () 
Uncaught TypeError: Cannot read property 'proto' of undefined
但是
fileField
是一个
Ember.TextField
(实际上是一个视图),并且是在使用它的上下文中定义的(视图
PreviewUploadImage


那么问题出在哪里呢?

我猜您遇到的问题是由于
文件字段
视图不是自动创建的,因此查找失败

尝试创建视图,而不是扩展:

App.PreviewUploadImage = Ember.ContainerView.extend({
  childViews: ['fileField'],
  fileField: Ember.TextField.create({...}),
});
更新 编辑了我的答案后,我忘记了一些实质性的内容,将外部视图设置为
ContainerView
,并将
fileField
定义为
childview
数组中的子视图


希望有帮助。

不引用视图,而是引用控制器内容。您必须使用
视图
引用视图,如下所示:

<script type="text/x-handlebars">
  {{#view Ember.View contentBinding="App.myModel"}}
    {{#view App.PreviewUploadImage name="logo_image" contentBinding="content"}}
      {{view view.fileField}}
      {{view view.previewImageView width="200" height="100" srcBinding="content.myModel_src"}}
    {{/view}}
  {{/view}}
</script>

{{{#view Ember.view contentBinding=“App.myModel”}
{{{#view App.PreviewUploadImage name=“logo_image”contentBinding=“content”}
{{view.fileField}
{{view view.previewImageView width=“200”height=“100”srcBinding=“content.myModel_src”}
{{/view}
{{/view}

谢谢,但这并不能解决问题:(@gonvaled,对不起,忘了一些重要的东西…现在看一看谢谢,这是正确的:
ContainerView
childview
做这个把戏。
create
不是真的需要。这里的工作。ContainerView是一个新概念吗?(我没有设法跟上ember.js的发展)@gonvaled,一点也不,
ContainerView
现在已经存在了一段时间。但你是对的,跟上ember.js有时可能是一份全职工作:)谢谢,但这是一个打字错误(我正在尝试几件事)
view.fileField确实可以使用,但实际上并不需要(
fileField
就足够了)。该解决方案是由直觉像素提供的。
<script type="text/x-handlebars">
  {{#view Ember.View contentBinding="App.myModel"}}
    {{#view App.PreviewUploadImage name="logo_image" contentBinding="content"}}
      {{view view.fileField}}
      {{view view.previewImageView width="200" height="100" srcBinding="content.myModel_src"}}
    {{/view}}
  {{/view}}
</script>