3

現在、私のサイトには index.ejs ファイルに検索バーが含まれており、ユーザーが Enter キーを押すか検索ボタンをクリックすると、{{action createSearch}} を使用してコントローラーの「createSearch」関数を呼び出します。これは完璧に機能します!現在、新しい機能をテストしており、ユーザーの操作なしで index.ejs ファイルから直接 newSearch 関数を呼び出したいと考えています。ロード時にjqueryを使用してキーの押下/クリックをシミュレートしようとしましたが、コントローラーはアクションイベントを呼び出さないようです。

編集:機能的なindex.jsコードが含まれています

         {{view Ember.TextField id="new-search" placeholder="enter a few keywords"
             valueBinding="newSearch" action="createSearch"}}         
        <div id="gobutton" {{action createSearch}}><div id="gobutton_inner">SEARCH</div></div>
4

1 に答える 1

3

このようなシステム レベルのアクションでは、 でイベントを使用することをお勧めしますApplicationRoutecreateSearchコントローラー/ビューは、通常、これを行う方法を知っているコントローラーを介して、ルートが処理するようなイベントを送信できます。

App.ApplicationRoute = Em.Route.extend({
  events: {
    createSearch: function(query) {
      var controller = this.controllerFor('search');
      controller.doSearch(query);
    }
  }
});

任意のコントローラーのアクション ハンドラーから、イベントをトリガーできます。

this.send('createSearch', query);

あるいは見方によっては、

this.get('controller').send('createSearch', query);

このイベントのトリガーを行うには、個々のアクション ハンドラーを接続する必要があります。

于 2013-07-13T04:57:12.937 に答える