0

私はJavascriptMVCを使用していて、次の形式のコントローラーを持っています

$.Controller.extend('AppName.Controllers.ControllerName',
{
  onDocument: true
}
{
  initControllerName: function() {
    ...
  },
  testFucntion1() {
    alert('yeah!!');
  }
});

ビューによって生成されたページから関数testFunction1()を呼び出せるようにしたいと思います。

同じことをしているように見えるこの質問を見つけましたが、そこに提供されている答えでは理解できませんでした。

私はもう試した

$('#controllername').testFunction1();
$('#ppame_controllername').testFunction1();
$('#ppame_controllers.controllername').testFunction1();

成功せずに。

ご協力いただきありがとうございます!!

4

2 に答える 2

1

Martin Owenの答えは正確ですが、最初はapp_name_controller_nameが混乱していることがわかりました。

実際の例は次のとおりです。

コントローラが次のように定義されている場合

$.Controller.extend('Layout.Controllers.Page', 
  ...

次に使用します

$(document).layout_page("testFunction1");

レイアウト=app_name

ページ=controller_name

于 2013-10-15T21:51:12.123 に答える
0

次のコマンドで関数を呼び出すことができます。

$(document).app_name_controller_name("testFunction1");

関数に引数を渡したい場合は、関数名の後に引数を指定します。

$(document).app_name_controller_name("testFunction1", "Hello World");

onDocument: trueコントローラ定義の静的セクションにあるは、ドキュメント要素に自動的にアタッチされることを意味します。これにより、そのインスタンスを取得できます。他のものにバインドする場合は、onDocument: true次のようなものを削除して使用します。

$('#main').app_name_controller_name();

これにより、コントローラーのインスタンスが作成され、$('#main')要素にアタッチされます。その要素は、を介してコントローラーのメソッドで使用できますthis.element

状況はわかりませんが、コントローラーメソッドを頻繁に呼び出す必要はありません。コントローラーは、DOM要素によってトリガーされ、モデルによって公開されるイベントにバインドする必要があります。JMVCを使用すると、コントローラーメソッドをイベントにバインドするのが非常に簡単になります。イベントのリッスン

于 2011-07-31T13:28:58.693 に答える