この関数は、と呼び出されているので、以下のコードは機能しません。 = window。 この = controller.actions.projectを期待していましたが、それ以降はどのようにしてというキーワードが機能しているのかを学びました。そのコンストラクタに渡される関数からのjavascriptオブジェクトのプロパティへのアクセス
BROKEN
controller.actions = {
project: new TableauAction("Project",
function() {
$http.get('/reports/projects/').then(function (response) {
this.options = response.data;
});
}};
以下は、この問題を解決するが、それは非常に洗練され
は
controller.actions = {
project: new TableauAction("Project",
function() {
var self = controller.actions.project;
$http.get('/reports/projects/').then(function (response) {
self.options = response.data;
});
}};
TableauActionオブジェクトワークス:
function TableauAction(name, onChange) {
this.name = name;
this.onChange = onChange;}
私の質問は、それがコンストラクタに渡される関数からオブジェクトのプロパティにアクセスするより洗練された方法があるかどうかです。
はこの..を見て、 "これ" には注意してください:http://stackoverflow.com/questions/4195970/what-does - この - 平均。 javascriptでは、 "this"はその文脈に応じてさまざまな値を取る。あなたの場合、匿名関数の中の "this"とコールバックget関数の中の "this"は、それらの間でまだ異なっています。したがって、あなたは実際に自分自身を宣言しなければなりません。あなたのクラスのプロトタイプ)。 – briosheje
これは、コンストラクタが関数で何をするかによって大きく異なります。 'TableauAction'の定義を教えてください! – Bergi
'self = this'はうまくいくのでしょうか?あなたが渡す関数のコンテキストは何ですか? – Bergi