6

このコードを見てください...

```

            App.BooksRoute = Ember.Route.extend({
                model:  return function () {
                    return this.store.find('books');
                }
            });

            App.BooksController = Ember.ArrayController.extend({
                actions: {
                    updateData: function () {
                        console.log("updateData is called!");
                        var books = this.filter(function () {
                            return true;
                        });
                        for(var i=0; i<books.length; i++) {
                            //doSomething…
                        }
                    }
                }
            });

```

updateData外部から BooksControllerのアクションを呼び出したい。

このコードを試しました。

App.__container__.lookup("controller:books").send('updateData');

実際に動作します。ただし、updateDataアクションでは、テンプレートの {{action 'updateData'}} をクリックthisして呼び出されたものとは異なります。updateDatabooks

{{action 'updateData'}} をクリックした場合、アクション中のthis.filter()メソッドはupdateData本モデルを返します。ただし、 を呼び出した場合、実行App.__container__.lookup("controller:books").send('updateData');中のthis.filter()メソッドはupdateData何も返しません。

updateData{{action 'updateData'}} をクリックして同じ動作で、BooksControllerのアクションを外部から呼び出すにはどうすればよいですか。

それについて知っていただければ幸いです。

(私は Ember.js 1.0.0 を使用しています)

4

3 に答える 3