2013-11-15 4 views
3

Я чувствую, что это должно быть довольно прямолинейно, но я не могу получить содержимое контроллера в другом виде. Вот мой код:Ember.js получить контроллер в поле зрения

App.MapView = Ember.View.extend({ 
    elementId: ['map-canvas'], 
    didInsertElement: function() { 
     var self = this; 
     var controller = this.get('controllers.markers'); 
    } 
}); 

Если я console.log (контроллер), я получаю неопределенный.

В контроллере я бы сделать что-то вроде:

App.MarkersController = Ember.ArrayController.extend({ 
    needs: ['map'] 
}); 
App.MapController = Ember.ObjectController.extend({ 
    plot: function() { 
     var markers = this.get('controllers.markers'); 
    } 
}); 

ответ

9

Вы размещаете потребности на контроллере, который нуждается в другом контроллере, и где вы будете получать доступ к другому контроллеру.

И с точки зрения, для того, чтобы захватить контроллер вы делаете this.get('controller') и controllers объекта жизни на контроллере, так controller.controllers.markers

Кроме того, точка зрения создается только с контроллером по умолчанию, если уголек создает его, если вы делаете что-то вроде {{view App.MapView}}, он не создает MapController и связывает его с ним, он использует контроллер, который был в области видимости при создании представления.

App.MapView = Ember.View.extend({ 
    elementId: ['map-canvas'], 
    didInsertElement: function() { 
    var self = this; 
    var controller = this.get('controller.controllers.markers'); 
    } 
}); 

App.MarkersController = Ember.ArrayController.extend({ 

}); 
App.MapController = Ember.ObjectController.extend({ 
    needs: ['markers'], 
    plot: function() { 
    var markers = this.get('controllers.markers'); 
    } 
}); 

Заканчивать это реализация его:

http://emberjs.jsbin.com/ODuZibod/1/edit

+0

Я думаю, что если я использую уаг контроллер = this.get ('controller.controllers.markers.model') Я почти получить то, что мне нужно ... но я не могу понять, как перебирать содержимое. Если это помогает, мне нужно вытащить содержимое контроллера маркеров, прокрутить их в представлении, а затем создать маркер Google Maps для каждого. Я бы просто сделал все это в контроллере или модели, но я думаю, что didInsertElement в представлении - лучшее место для этого, поскольку я знаю, что карта была создана ... – paulruescher

+0

У меня также есть {{#view App .MapView contentBinding = "controllers.markers"}} {{/ view}}, который должен проходить по моим маркерам на мой взгляд, правильно? Если это правильно, как мне получить доступ к связыванию содержимого в didInsertElement? – paulruescher

+0

this.get ('content') – Kingpin2k

Смежные вопросы