2014-05-08 3 views
0

У меня есть два массива JS, один маршрут, я могу получить только одну модель за маршрут и независимо от попыток бесконечных способов создания ArrayControllers и использования их. Я не могу использовать вторую модель в своем шаблоне ,# всевозможные модели одного и того же маршрута

например,

{{#each}} // uses content model and default controller... works fine 
    <label>{{name}}</label> 
{{/each} 
{{#each %%whatever%%}} // trying to use another model/ JS array 
    <label>{{name}}</label> 
{{/each} 

Либо я получаю ошибки или нет данных показывает вверх.

Я попытался указать массив непосредственно, используя ArrayController и установив его содержимое и/или модель в качестве массива JS. Я попытался с помощью in ...

Например, предположим, что у меня есть

var x = [{name : "Jo"}, {name : "Bob"}]; 
var y = [{name : "Jake"}, {name : "Ben"}]; 

Как я могу отобразить их как

<label>Jo</label><label>Bob</label> 
<label>Jake</label><label>Ben</label> 

?

(без уменьшения здесь, придется использовать две отдельные массивы. Мой пример является более сложным, но страница не требует все из усложнять вещи, как создание дополнительных представлений, шаблоны и маршруты)

было бы неплохо, если бы

{{#each x}} 
    <label>{{name}}</label> 
{{/each} 
{{#each y}} 
    <label>{{name}}</label> 
{{/each} 

но это не работает.

Любые идеи, это сводит меня с ума! (Я знаю, что я мог бы добавить переменную для каждого элемента, который определяет, какая совокупность его часть затем использовать #if, но это слишком много рубить и не очень удобно)

Спасибо ...

ответ

0

Вы можете использовать установочный крючок setupController в вашем маршруте для установки свойств на контроллере. Эти свойства контроллера затем отображаются шаблоном.

// define some arrays 
App.x = [{name: "Jo"}, {name: "Bob"}]; 
App.y = [{name: "Jake"}, {name: "Ben"}]; 

App.ApplicationRoute = Ember.Route.extend({ 
    setupController: function (controller, model) { 
     // make these available to the controller 
     controller.set('x', App.x) 
     controller.set('y', App.y) 
    } 
}); 

См: http://jsfiddle.net/n724p/

+0

Проблема использует заглавные буквы !! http://jsfiddle.net/Dx3aJ/ Простое изменение 'y' на' Y' нарушает код !!! Это действительно отстой !!!! Потратьте целый день, пытаясь заставить работать:/ – user3606799

+0

Это неудачная гонка соглашений об именах, которые использует ember. Если вы используете заглавные буквы, Ember предполагает, что объект находится в глобальном пространстве имен. См. Этот ответ для получения дополнительной информации. Http://stackoverflow.com/questions/22772924/emberjs-text-binding-not-working/22774957#22774957 – Sarus

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