我有一个ember应用程序,它有一个profiles
路径来显示数据库中标题和特定项目的描述。我想为该数据创建一个edit
页面,就像在ember中的CRUD一样。我在edit
资源路由下实现了profiles
路由。
index
模板工作正常,它成功填充数据库中的数据,结果显示在模板中。但是,只要我为该路由声明控制器并向该控制器添加操作,模板就会中断。
以下是该应用的app.js代码。
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 onyl时,显示没有数据的表单:
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);
}
});
}
});
我想在提交表单时创建一个动作,编辑动作被触发并在服务器上执行put,我在服务器上有php laravel 4后端来RESTful地处理请求。
我尝试在配置文件/编辑模板中的编辑模板下实现上面的代码,但我无法使其工作,所以我将代码粘贴到配置文件的索引模板中。
Ember在控制台上显示此日志
生成 - &gt; route:profiles.index对象{fullName:“route:profiles.index”} ember-1.0.0.js:356
使用默认视图&lt;(。的子类)渲染应用程序 Ember.View):ember330&GT;对象{fullName:“view:application”} 烬-1.0.0.js:356
使用默认视图渲染配置文件 对象{fullName:“view:profiles”} ember-1.0.0.js:356
生成 - &gt; controller:profiles.index对象{fullName: “controller:profiles.index”} ember-1.0.0.js:356
无法找到“profiles.index”模板或视图。什么都不会 呈现对象{fullName:“template:profiles.index”} 烬-1.0.0.js:356
生成 - &gt; route:index对象{fullName:“route:index”} 烬-1.0.0.js:356
生成 - &gt; route:about.index对象{fullName:“route:about.index”} 烬-1.0.0.js:356
答案 0 :(得分:0)
一些事情:
要将其放入配置文件/编辑模板中,您需要一个已定义{{outlet}}的profiles.hbs模板。那样编辑模板就会显示出来。此外,profiles.hbs应位于profiles目录之外。和profiles目录应包含索引和编辑模板。
我认为它应该是一个ArrayController,而不仅仅是Controller。
我认为一旦你根据第1点改变,它应该正常工作。试一试。