これをどのように機能させる必要がありますか?
var param = 'someFunction';
require('views/MyView').[param]();
このコードを実行すると、次のエラーが発生します
SyntaxError: missing name after . operator
require('views/MyView').[renderMethod]();
これをどのように機能させる必要がありますか?
var param = 'someFunction';
require('views/MyView').[param]();
このコードを実行すると、次のエラーが発生します
SyntaxError: missing name after . operator
require('views/MyView').[renderMethod]();
.
と[]
同じようなものです。
あなたが欲しいのはrequire('views/MyView')[renderMethod]();
require(...)
エクスポートされたモジュールを返します。これは基本的に、関数をプロパティとして持つオブジェクトである必要があります。
だから、私たちが持っているとしましょう:
var obj = {
foo: function() { alert('foo'); }
bar: function() { alert('bar'); }
}
次に、次のことができます。
obj.foo();
-固定名関数を呼び出す
obj['foo']();
-動的な名前の固定引数
obj['foo'].apply(this, args)
-動的関数名と引数。
編集:
私が気づいたもう一つのこと:
requirejsでは、次のようなことを行うと次のようになります。
define (require, function() {
x = require('views/Foo');
x.bar();
}
RequireJSは、コードを解析することにより、「view / Foo」モジュールが必要であると判断し、コードを実行する前にそれがロードされていることを確認します。
ただし、動的モジュールをロードする場合、プリロードするモジュールが事前にわからないため、モジュールがロードされるときに通知を受けるには、コールバックを使用する必要があります。
define (require, function() {
require('views/' + viewName, function(myView) {
myView.bar(); // or
myView[dynamicFunc](); // ...
});
}