从Ember.js中的扩展对象访问控制器的属性

时间:2014-01-14 21:34:23

标签: javascript ajax ember.js

我正在尝试从扩展对象访问和编辑/编辑单独控制器上的属性。我已经尝试过使用this.get('controllers.photos');而没有运气包含控制器。我也试过this.controller('photos').get('uploadPhotos')和一些不起眼的实现。我在下面列出了我的代码示例。

我有一个属性为uploadedPhotos

的控制器
App.PhotosController = Ember.ArrayController.extend({
  uploadedPhotos: [1,2,3,4,5]
}

然后我有一个对象来处理我的上传并存储图像的ID。

App.Upload = Ember.Object.extend({
 ...some ajax call
  success: function(file, response){
     App.PhotosController.uploadedPhotos = response;
  }
});

然后在名为photos的视图中创建

App.PhotosView = Ember.View.extend({
  didInsertElement: function(){
    Upload.create();
  }
});

2 个答案:

答案 0 :(得分:1)

您应该将上传方法移到路由器中。

话虽如此,您可以在创建时将控制器注入上传对象。

App.Upload = Em.Object.extend
  success: (file, response) ->
    @get('controller').set('uploadedPhotos', response)

App.PhotosView = Em.View.extend
  didInsertElement:
    controller = @get('controller')
    App.Upload.create(controller: controller)

对于回答coffeescript感到抱歉,打字更快。

答案 1 :(得分:0)

我认为Upload对象只是处理照片的加载。在这种情况下,有没有理由在PhotosController上没有正确的功能(例如在init上进行ajax调用)?

无论如何,如果你真的需要连接控制器(我想上传需要扩展Em.Controller而不是Em.Object),请检查:

Dependecies Between Controllers