2014-08-27 2 views
0

У меня возникли трудности с изучением ember.js и ember-cli одновременно, в первую очередь, в попытке перевести то, что находится на вкладке ember.js, в среду ember-cli , Я собирался в кругах, пытаясь понять, как использовать динамические сегменты с полем, кроме «id».Проблемы с Ember и Ember-cli с динамическими маршрутами

В Emberjs.com дает пример использования jQuery.getJSON и функции сериализации, но я не знаю,

1), как ссылаться на JQuery от Ember-кли (если я даже нужно сделать это так, как в ссылка выше говорит), и

2) Похоже, что независимо от того, что я стараюсь, я получаю ошибку «не могу вызвать метод GET из" неопределенных»в моей функции сериализации

Я в настоящее время использую transitionToRoute так как я пытаюсь перейти от кнопки вместо вспомогательного помощника link-to (лучшие рекомендации очень приветствуются приехать).

Вот действие моя кнопка использует (это в контроллере):

actions: { 
    viewDetails: function() { 
    this.transitionToRoute('project-details', this.get('projectName')); 
    } 
} 

Если мой маршрут является:

this.resource('project-details', {path: '/project/:project_projectName'});

Затем документы Эмбер бы предположить, что это что мне нужно в маршруте моего проекта, но у меня нет никакой перестановки сериализатора, чтобы работать, поэтому я уверен, что я делаю что-то неправильно, но я не знаю, что.

model: function(params) { 
    //I've tried all kinds of things in here, not sure if I need getJSON 
    // since right now I'm just using fixture data 
    //If I do need jQuery, not sure how to use it in ember-cli (i.e. the import statement to use) 
    return jQuery.getJSON('/project/' + params.project_projectName); 
}, 

serialize: function(model) { 
    return { project_projectName: model.get('projectName') }; 
} 

EDIT: Добавление модели

var Project = DS.Model.extend({ 
    creationDate: attr('date'), 
    lastModifiedDate: attr('date'), 
    lastModifiedResourceId: attr('string'), 
    ppmcNumber: attr('number'), 
    ppmcUrl: attr('string'), 
    phase: attr('string'), 
    staffingProfile: attr('string'), 
    projectType: attr('string'), 
    projectDesc: attr('string'), 
    product: attr('string'), 
    clientId: attr('string'), 
    clientName: attr('string'), 
    overallStatus: attr('string'), 
    liveDate: attr('date'), 
    rygStatus: function(){ 
    return 'status-' + this.get('overallStatus').toLowerCase(); 
    }.property('overallStatus') 
}); 
+0

где определяется 'projectName'? Я предполагаю, что ошибка заключается в том, что «get» не находит для нее значения. – Grapho

+0

@Grapho: имя_проекта определено в модели проекта. Ошибка говорит о том, что он не может получить доступ к методу «получить» из «неопределенного», который я подразумеваю, чтобы он не знал, что такое модель, поэтому он не может выполнить метод get. – redOctober13

+0

Я немного смущен, вы модель данных ember, но вы используете $ .getJSON. Когда вы создаете/используете эту модель данных ember? – Kingpin2k

ответ

1

Вы должны использовать Ember.get, так как ваш объект не является объектом Ember (это можно легко исправить, путем оборачивания объектов в Ember.Object.create({}), но геттеры и сеттеры применяются только к предметам Ember)

serialize: function(model) { 
    return { project_projectName: Em.get(model, 'projectName') }; 
} 
+0

Имеет смысл для меня, но если я его вставляю, я получаю сообщение о том, что он не может найти метод toLowerCase, который используется для моей модели для определенного поля: rygStatus: function() {return 'status-' + this.get ('overallStatus') toLowerCase(). } .property ('totalStatus') ' – redOctober13

+0

Похоже, вы находитесь дальше в этом процессе, не могли бы вы подбросить вышеприведенную модель, очевидно, что' generalStatus' не определено/null там, но я не уверен, что область этого свойства является. – Kingpin2k

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