2013-10-24 3 views
1

У меня есть приложение ember, у которого есть маршрут profiles, чтобы отобразить заголовок и описание конкретного элемента из базы данных. Я хочу создать страницу edit для этих данных, как в CRUD в ember. Я выполнил маршрут edit под маршрутом ресурса profiles.Шаблон Ember Edit

Шаблон index отлично работает, он успешно заполняет данные из базы данных и результаты отображаются в шаблоне. Однако, как только я объявляю контроллер для этого маршрута и добавляю действие к этому контроллеру, шаблон прерывается.

Вот код приложения для приложения.

App.Profile = DS.Model.extend({ 
title: DS.attr('string'), 
description: DS.attr('string') 
}); 

App.Router.map(function(){ 
this.resource("about", function(){ 
    this.route("create", {path: '/create'}); 
}); 
this.resource('profiles', {path: '/profiles/:profiles_id'}, function(){ 
    this.route('edit'); 
}); 
this.resource('login'); 
this.resource("logout"); 
}); 

App.ProfilesController = Ember.Controller.extend(); 

App.ProfilesRoute = Ember.Route.extend({ 
model: function(params) { 
    NProgress.start(); 
    var data = App.Profile.find(params.profiles_id); 
    data.then(function(){ 
     NProgress.done(); 
    }); 
    return data; 
} 
}); 

HTML-код для профилей:

<script type="text/x-handlebars" data-template-name="profiles"> 
    <div class="container"> 
    <div class="row"> 
     <h1>{{title}}</h1> 
    <p> 
    {{description}} 
    </p> 
    <form {{action edit on="submit"}}> 
    {{input value=title type="text" placeholder="Title"}} 
    {{textarea value=description}} 
    {{input class="button" type="submit" value="Edit"}} 
    </form> 
</div> 
    </div> 
</script> 

На данный момент все работает отлично. но как только я добавляю действие редактирования в ProfileController, когда я загружаю страницу в браузере, отображается только форма без данных. что пошло не так?

, когда я добавить этот код в ProfilesController онил форме без каких-либо данных, показано:

App.ProfilesController = Ember.Controller.extend({ 
    edit: function(){ 
     var self =this, data = this.getProperties('title', 'description'); 
     self.set('errorMessage', null); 
     self.set('successMsg', null); 
     Ember.$.put('profiles', data, function(){ 
      NProgress.start(); 
     }).then(function(response){ 
      NProgress.done(); 
      if(response.success){ 

      }else { 
       self.set('errorMessage', response.message); 
       console.log(response.message); 
      } 
     }); 
    } 
}); 

Я хочу, чтобы создать действие, когда форма отправлена, редактировать действие получить срабатывает и сделать надеть сервер, у меня есть php laravel 4 backend на сервере для обработки запроса RESTfully.

Я попытался реализовать приведенный выше код под шаблоном редактирования, как в профилях/шаблоне редактирования, но я не смог заставить его работать, поэтому я вставил код в индексный шаблон профилей.

Ember отображает этот журнал на консоли

генерируемый -> Маршрут: profiles.index Объект {FullName: "Маршрут: profiles.index"} Эмбер-1.0.0.js: 356

Rendering Приложение с видом по умолчанию < (подкласс Ember.View): ember330> Объект {FULLNAME: "вид: применение"} Ember-1.0.0.js: 356

Визуализация профилей с видом по умолчанию Object {FULLNAME: «вид: профили»} уголек-1.0.0.js: 356

генерируется -> Контроллер: profiles.index Объект {FULLNAME: "Контроллер: profiles.index"} Ember-1.0.0.js: 356

Не удалось найти Шаблон "profile.index" или представление. Ничто не будет визуализации объекта {FullName: "Шаблон: profiles.index"} Эмбер-1.0.0.js: 356

генерироваться -> Маршрут: индекс объекта {FullName: "Маршрут: индекс"} ember- 1.0.0.js: 356

сгенерировано -> route: about.index Object {fullName: "route: about.index"}ember-1.0.0.JS: 356

ответ

0

Пара вещей:

  1. Для ввода его в шаблон профили/редактирования, вам потребуется шаблон profiles.hbs, который имеет {{}} на выходе определяется. Таким образом будет показан шаблон редактирования. Кроме того, profiles.hbs должен находиться вне каталога профилей. и каталог профилей должен содержать шаблоны индекса и редактирования.

  2. Я думаю, что это должен быть ArrayController, а не просто контроллер.

Я думаю, что после изменения в соответствии с пунктом 1, он должен работать должным образом. Попробуйте.

+0

Большое спасибо за ваш ответ, но до сих пор я не использовал файлы hbs, и я не знаю, как их использовать с laravel на бэкэнд, используя вышеприведенный код, можете ли вы, пожалуйста, описать меня немного дальше, исправления и hbs исправления, которые вы предлагая? – monk

+0

Вам не нужно использовать файлы hbs. В основном профили data-template-name должны иметь {{outlet}}, и у вас будет еще 2 имени-шаблона данных с профилями/индексом и профилями/edit. Вы можете сохранить их все в одном файле. – VNarasimhaM

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