灰烬编辑模板

时间:2013-10-24 12:42:39

标签: javascript ember.js ember-data

我有一个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

1 个答案:

答案 0 :(得分:0)

一些事情:

  1. 要将其放入配置文件/编辑模板中,您需要一个已定义{{outlet}}的profiles.hbs模板。那样编辑模板就会显示出来。此外,profiles.hbs应位于profiles目录之外。和profiles目录应包含索引和编辑模板。

  2. 我认为它应该是一个ArrayController,而不仅仅是Controller。

  3. 我认为一旦你根据第1点改变,它应该正常工作。试一试。