让控制器无法使用Ember.textfield

时间:2014-01-31 08:11:00

标签: javascript ember.js

App.PhotoUpload = Ember.TextField.extend
  type: "file"

  change: (evt) ->
      # @get('controller') gives - App.PhotoUpload
      @get('controller').send('uploadImage')

在上面的代码中,如果我调试它并检查@get('controller').constructor它返回App.PhotoUpload,这是不正确的,它不会调用我路线中的uploadImage操作。

当我将Ember.TextField更改为Ember.View时,@get('controller')按预期工作,并调用uploadImage操作。但是,由于我在图像上传时自动更新服务器,我需要坚持使用TextField。

我有这些问题: 1.从Emberview访问另一个控制器有哪些方法? 2.如何从Ember.TextField中访问正确的控制器?

1 个答案:

答案 0 :(得分:1)

这里的问题是包含的输入字段最近被修改为extend Ember.Component而不是Ember.View。组件和视图之间的主要区别之一是组件is itself的控制器属性。老实说,我不完全确定为什么要做出改变。话虽如此,仍然可以使用targetObject property从文本字段定义的上下文访问控制器。

<强>更新

我对此进行了更多调查,结果发现并非所有输入字段都转换为组件,只有TextField和TextArea。将它们转换为组件的主要原因似乎是公开some helpful action handlers,因为组件提供了这种能力。