1

emberjs(1.0.0rc1)とember-data(ごく最近のビルド#36d3f1b)を使用して、基本的なクラッドの例をセットアップしようとしています。送信されたモデルをビューから取得して更新/保存する方法がわかりません。私のコードは次のようになります。

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>

送信フックからフォームの値(モデルにシリアル化されている)にアクセスするにはどうすればよいですか?次に、FixtureAdapterを介してこれを永続化するにはどうすればよいですか?

4

2 に答える 2

2

質問の最初の部分は、実際には非常に単純であるため、答えるのが難しいですが、単純にするためには、モデルCRUDについての考え方を変える必要があります。「送信」機能は必要ありません。ビューをインスタンス化するとき)、モデルのインスタンスがバインドされている必要があります。(新しいモデルを作成する場合、それは新しい空のインスタンスになります。)ビューでそのモデルに変更を加えると、それらは即座に行われます。提出する必要はありません。(結局のところ、あなたは何に提出しますか?)

これが実際にあなたの質問に答えるかどうかはわかりませんが、おそらくそれはあなたをそれに答える軌道に乗せるでしょう。

私はあなたの2番目の質問についてもっと明確にすることができます。FixturesAdapterを介して値を永続化することはできません。FixturesAdapterはまさにそれであり、フィクスチャ(基本的に読み取り専用データ)をストアにロードするためのアダプタです。FixturesAdapterからモデルに加えられた変更は、アプリがリロードされるまで続きます。データを永続化するには、FixturesAdapterから別のアダプター(おそらくRestAdapter)に移行する必要があります。

于 2013-03-03T01:30:57.627 に答える
0

この記事では、作成フォームを含む小さなサンプルアプリの作成について説明します(元々はポルトガル語ですが、幸いなことに、この場合、Google翻訳ではテキストが文字化けしすぎません)。コードはここにあり(重要な部分はページのずっと下にあります)、実際の例はここにあります

于 2013-03-21T14:29:27.227 に答える