1

更新: これは時代遅れです。私のブログは Ember ベースではなくなりました。基本的に、私の質問は簡単です。でレコードを追加しましたcreateRecord()。イベントが発生したことはわかりdidCreateますが、作成したばかりのものを ember にロードして表示する方法がわかりません。このケースは、投稿にコメントを追加することに関するものです。これは、私がすぐに確認したいことです。

更新:私は jsfiddle を持っていませんが、私が話しているライブアプリ/サイトを自慢できます。ここは私自身のブログです: http://eduardmoldovan.com/

テンプレートはページの下部にあり、javascript はこちら: http://eduardmoldovan.com/static/eduardmoldovan.com/javascripts/ngin.js

4

3 に答える 3

1

didCreateフック からレコードの配列に新しいレコードを手動で追加できます。

var newRecord = transaction.createRecord(Ngin.Comment, {
    articleUrl: articleUrl,
    name: name,
    url: url,
    email: email,
    body: body,
    secret: secret
});
newRecord.one('didCreate', this, function () {
    this.get('comments').pushObject(newRecord);
});
transaction.commit();

または、サーバーからリロードする場合は、次のreload方法 を使用します。

controller.get("comments").reload();

編集

ソースコードを調べたところupdate、 class にメソッドが見つかりましたRecordArray。それは正しいもののようです。

于 2013-02-20T08:39:34.763 に答える
1

commit() を使用してコメントを保存したと仮定すると、次のように動作するはずです。

{{#each comment in post.comments}}
  {{comment.text}}
{{/each}}
于 2013-02-18T20:51:36.103 に答える
0

以下は効率的でも最良の方法でもありませんが、ビューに通知します。そして、より良い方法を見つけようとします。更新メソッドと、ビューに通知するメソッドがあると確信しています。すぐには見つかりません。

テンプレート

<script type="text/x-handlebars" id="posts">
<button {{action 'newObject'}} ></button>

コントローラ

App.PostsController = Ember.ArrayController.extend

  actions: {
    newObject: function() {
       this.store.createRecord('post', {id: xxxx, title: 'Default title'});
       var all = this.store.filter('post', function(post) {
         return post; // return each object
       }); //This filter will include the new post record
       this.set('model', all); // set will notify the view of a mutated array
    }
  },
于 2015-01-20T20:36:49.093 に答える