Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬js表单提交查看_Javascript_Ember.js_Ember Data_Single Page Application - Fatal编程技术网

Javascript 余烬js表单提交查看

Javascript 余烬js表单提交查看,javascript,ember.js,ember-data,single-page-application,Javascript,Ember.js,Ember Data,Single Page Application,使用emberjs(1.0.0rc1)和ember数据(最新版本#36d3f1b),我试图建立一个基本的crud示例。我不知道如何从视图中检索提交的模型,然后更新/保存它。下面是我的代码的样子: App = Ember.Application.create(); App.Router.map(function() { this.resource('posts', function() { this.route('create'); this.route('edit', {

使用emberjs(1.0.0rc1)和ember数据(最新版本#36d3f1b),我试图建立一个基本的crud示例。我不知道如何从视图中检索提交的模型,然后更新/保存它。下面是我的代码的样子:

App = Ember.Application.create();

App.Router.map(function() {
  this.resource('posts', function() {
    this.route('create');
    this.route('edit', {
      path: '/:post_id'
    });
  });
});

App.PostsIndexRoute = Ember.Route.extend({
  model: function() {
    return App.Post.find();
  }
});

App.PostsCreateView = Ember.View.extend({
  submit: function () {
    console.log(this.get('model')); // undefined
  }
});

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

App.Post.FIXTURES = [{
  id: 2,
  title: 'a',
  body: 'aa'
}, {
  id: 5,
  title: 'b',
  body: 'bb'
}];

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter.create({
    simulateRemoteResponse: false
  })
});
和创建模板:

<script type="text/x-handlebars" data-template-name="posts/create">
  {{#view App.PostsCreateView tagName="form" classNames="form-horizontal"}}
  <h3>Create</h3>

  <div class="control-group">
    <label class="control-label" for="title">Title</label>
    <div class="controls">
      <input type="text" id="title" placeholder="Title" />
      {{view Ember.TextField valueBinding="title"}}
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="body">Body</label>
    <div class="controls">
      <input type="password" id="body" placeholder="Body" />
    </div>
  </div>
  <div class="control-group">
    <div class="controls">
      <button class="btn">Create</button>
    </div>
  </div>

  <div>{{#linkTo 'posts'}}Back{{/linkTo}}</div>
  {{/view}}
</script>

{{{#view App.PostsCreateView tagName=“form”classNames=“form horizontal”}
创造
标题
{{view Ember.TextField valueBinding=“title”}
身体
创造
{{{linkTo'posts}}返回{{/linkTo}
{{/view}

如何从提交钩子访问表单的值(序列化到模型)?其次,我如何通过FixtureAdapter来保持这一点?

您问题的第一部分很难回答,因为它实际上非常简单,但为了使它变得简单,您需要改变您对模型CRUD的思考方式。不需要您的“提交”功能。当您实例化一个视图时,它应该有一个绑定到它的模型实例。(如果您正在创建一个新实例,它将是一个新的空实例。)当您在视图中对该模型进行更改时,会立即进行更改;不需要提交。(毕竟,你会服从什么?)

我不确定这是否真的回答了你的问题,但也许这会让你走上回答问题的轨道

我可以更明确地回答你的第二个问题,通过FixturesAdapter坚持一个值:你不能。FixturesAdapter就是这样一个适配器,用于将装置(基本上是只读数据)加载到存储中。从FixturesAdapter对模型所做的更改只会持续到重新加载应用程序。要持久保存数据,您需要从FixturesAdapter转换到另一个适配器(可能是RestAdapter)。

涉及构建一个包含创建表单的小示例应用程序(它最初是葡萄牙语的,但幸运的是,在这种情况下,google translate不会对文本进行太多的篡改)。
您可以找到代码(重要的部分在页面下方)和一个实例。

谢谢您的回复。因此,按照您概述的方法,是否会在每次修改属性(用户在文本框中键入字母)时导致往返服务器?对于第二部分,我应该更清楚;我只是想把FixturesAdapter当作一个真正的存储来使用,即使刷新时更改丢失了,然后将其换成REST适配器。你能给我举一个工作示例吗?不,我不是细节方面的专家,但更复杂的适配器在将更新持久化到服务器时是“智能”的,并且不会每次接触模型时都推送它。对于FixturesAdapter,这是一个好方法,因为在您安装后端服务器之前,它们会为您提供一些开发工具。然而,在这个世界上,“坚持”的意思是“使它持久而不刷新”;通过使用fixture,您可以将这种持久性推迟到以后处理。如果是你处理问题的时候了,是时候从FixturesAdapter向上移动了。