我无法理解这一点。我已经从这个jsfiddle(图片预览+上传的展示)开始,它与ember-0.9.8.1
一起使用,我正在尝试使用this jsbin中的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>
和这个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
但fileField
是一个Ember.TextField
(确实是一个视图),并在使用它的上下文中定义(视图PreviewUploadImage
)。
那么问题出在哪里呢?
答案 0 :(得分:1)
我猜您遇到的问题是由于fileField
视图未自动创建,因此查找失败。
尝试创建视图而不是扩展:
App.PreviewUploadImage = Ember.ContainerView.extend({
childViews: ['fileField'],
fileField: Ember.TextField.create({...}),
});
编辑我的回答我忘记了一些实质内容,使外部视图成为ContainerView
并将fileField
定义为childViews
数组中的子视图。
希望它有所帮助。
答案 1 :(得分:0)
this
不会引用该视图,而是引用您的控制器内容。您必须使用view
引用该视图,如下所示:
<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>