2013-08-09 3 views
2

Предположим, у меня есть view, который this.controller равен application_controller, поэтому как я могу привязать value этого вида к another_controller. Вид - TextField.Ember.js посмотреть значение привязки контроллера

View (есть application_controller в контексте этой точки зрения):

CellarRails.SearchTextField = Ember.TextField.extend({ 
    templatename: 'index', 
    insertNewline: function(){ 
    this.get('controller').transitionToRoute('search'); 
    } 
}); 

контроллер Поиск:

CellarRails.SearchController = Ember.ArrayController.extend({ 
    content: [], 
    query: '' 
}); 

Поиск маршрута (здесь я хватаю свойство запроса поискового контроллера, который я хочу связываются с видом):

CellarRails.SearchRoute = Ember.Route.extend({ 
    serializeParams: function(controller) { 
    return { 
     query: controller.get('query') 
    }; 
    }, 
    setupController: function(controller, context, params) { 
    console.log(params); 
    controller.set('context', CellarRails.Track.find(params)); 
    } 
}); 

Могу ли я расширить контроллер приложений и добавить needs: 'search', чтобы я мог сделать this.controller.search.get('query'), чтобы получить свойство запроса контроллера поиска?

+0

Вы можете поделиться некоторыми кодами? – Vadim

+0

shure, ознакомьтесь с обновленным сообщением – xamenrax

ответ

3

Вы почти ответили на вопрос самостоятельно, то здесь это последний бит.

После добавления потребностей вы можете сделать:

this.get('controllers.search').get('query'); 

Надеется, что это помогает.

+1

@ Никита, как лучшая практика, ваш взгляд не должен знать о вашем контроллере, но наоборот. Создайте вычисленное свойство на контроллере, с которым связано ваше представление, и внутри CP, который у вас есть, доступ к вашим контроллерам.search.query. ИМО это будет способ сделать это. – intuitivepixel

+3

IIRC, двойные «get's» не нужны. this.get ('controllers.search.query') также должен работать. –

+0

@JavonHarper благодарит за комментарий, вы абсолютно правы! – intuitivepixel

2

Просто некоторые заметки, да, вы можете расширить контроллер приложений и добавить потребности поиска

CellarRails.ApplicationController = Ember.Controller.extend({ 
    needs: ['search'], 
    someMethod: function(){ 
     // this would be the query property from the search controller 
     var query = this.get('controllers.search.query'); 
    } 
}); 

Кроме того, Может быть, эта часть работает для вас, если это так игнорировать меня, но я не считаю, что setupController крюк имеет 3 параметра.

setupController: function(controller, model) { 
    controller.set('model', model); 
     or 
    this._super(controller, model); 
    } 

И модель крюк есть один, который получает Params, и уголек передает, что к контроллеру установки

+0

Вы правы, я не заметил, что Im использует библиотеку ember-запросов. – xamenrax

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