Ember - пытается получить доступ к данным модели CompaniesController из UsersController или UsersRoute

Я упростил историю для краткости.

У меня есть 2 базовые модели, Пользователь и Компания, и отображать списки каждой на отдельных шаблонах. Но в списке Пользователи я хочу иметь выпадающий список сверху, чтобы фильтровать то, что пользователи видны. Сейчас я просто хочу список компаний из модели / контроллера компании в представлении "Пользователь" после некоторой обработки данных (мне нужен только список названий компаний, а не весь объект в раскрывающемся списке).

Мои маршруты:

App.Router.map(function(){
    this.resource("users");    
    this.resource("companies");
)};

Маршрут модели пользователя и контроллер для маршрута пользователя:

App.User = DS.Model.extend({
    username: DS.attr('string'),
    company: DS.attr('string')
});

App.UsersRoute = Ember.Route.extend({
    model: function(){
        return this.store.find("User");
    }
});

App.UsersController = Ember.ArrayController.extend({        
    companyList: [],
    filterUserCompany: function(){
        console.log("filterUserCompany");
    },  
    count: Ember.computed.alias("length")    
});

Модель компании, маршрут и диспетчер:

App.Company = DS.Model.extend({
    name: DS.attr('string'),
    address1: DS.attr('string'),
    address2: DS.attr('string'),
    city: DS.attr('string'),
    state: DS.attr('string'),
    postal: DS.attr('string'),
    country: DS.attr('string'),
    created: DS.attr('date')
});

App.CompaniesRoute = Ember.Route.extend({
    model: function(){
        return this.store.findAll("Company");
    }
});

App.CompaniesController = Ember.ArrayController.extend({
    count: Ember.computed.alias("length")
});

Шаблон Users.htm (вверху - выпадающий список компаний, где я хочу указать только название компании, а внизу - список пользователей)

<div class="inner-content-tools" style="width:auto;height:28px;">
    <div class="add-btn filterlist-item">Add user</div>
    <div class="filterlist-item">
        {{view Ember.Select
        id="filter_company"
        content=companyList
        selection=company
        class="selectlist"
        prompt="Show all users, or select company"
        change=filterUserCompany
        }}
    </div>
</div>
<br />    
    <table id="data-table" width="100%" cellspacing="0" style="margin-bottom:20px;">        
        {{#each}}
        <tr>
            <td>{{company}}</td>
            <td>{{username}}</td>
            <td>{{#link-to "user" this tagName="span"}}go to{{/link-to}}</td>
        </tr>
        {{/each}}
    </table>
</div>

Я пробовал несколько производных этого в UsersRoute

setupController: function (controller, model) {
    this._super(controller, model);

    // THIS WORKS TO FILL DROP DOWN
    controller.set("companyList", ["ID Plans", "ReicheGroup"]);

    // THIS NEVER WORKS
    //this.controllerFor('companies').get('model');
    //
},

И после того, как я получу модель компаний (массив компаний), я хочу перебрать их и создать простой массив списков для свойства companyList, чтобы заполнить раскрывающийся список в шаблоне Users.

Я также пробовал многие производные этого в UsersController

App.UsersController = Ember.ArrayController.extend({

    needs: "companies",

    companyList: function(){

         // AND ITERATE controllers.companies.model TO
         // GET THE COMPANY NAME (.name) FROM EACH COMPANY OBJECT
        return controllers.companies.model.ITERATE THESE AND RETURN ARRAY OF NAMES

    }.property(),

    filterUserCompany: function(){
        console.log("filterUserCompany");
    },

    count: Ember.computed.alias("length")

});

Все работает нормально, поскольку у меня есть два рабочих маршрута, которые правильно отображают шаблоны, один показывает список компаний, а другой показывает список пользователей (так что Restadapter работает нормально). Обе страницы отображаются и отлично работают (mydomain.com/users и mydomain.com/companies), а также переходят к отдельному пользователю или компании соответственно. Но я просто хочу, чтобы на странице пользователей был чертов список компаний, и было просто неудобно просто сделать ajax-вызов и получить список компаний (почему бы не использовать компании, которые уже есть в магазине).

Помоги мне, Оби-Вон, ты моя единственная надежда.

0 ответов

Другие вопросы по тегам