0

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

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

<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>

连同这个js:

App.PreviewUploadImage = Ember.View.extend({
    fileField: Ember.TextField.extend({...}),
});

正如您在控制台错误中看到的:

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

ButfileField是一个Ember.TextField(确实是一个视图),并且是在使用它的上下文中定义的(视图PreviewUploadImage)。

那么问题出在哪里呢?

4

2 回答 2

1

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

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

App.PreviewUploadImage = Ember.ContainerView.extend({
  childViews: ['fileField'],
  fileField: Ember.TextField.create({...}),
});

更新

编辑我的答案我忘记了一些实质性的东西,使外部视图 aContainerView并定义fileFieldchildViews数组中的子视图。

希望能帮助到你。

于 2013-09-23T05:54:46.693 回答
0

this does not reference the view, but your controller content. You will have to reference the view using view, like do this:

<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>
于 2013-09-23T06:13:18.953 回答