У меня есть приложение 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
Большое спасибо за ваш ответ, но до сих пор я не использовал файлы hbs, и я не знаю, как их использовать с laravel на бэкэнд, используя вышеприведенный код, можете ли вы, пожалуйста, описать меня немного дальше, исправления и hbs исправления, которые вы предлагая? – monk
Вам не нужно использовать файлы hbs. В основном профили data-template-name должны иметь {{outlet}}, и у вас будет еще 2 имени-шаблона данных с профилями/индексом и профилями/edit. Вы можете сохранить их все в одном файле. – VNarasimhaM