1

私はAngularが初めてで、これをコントローラー内の変数に割り当てる理由がわかりませんでした。

angular.module('NoteWrangler')
.controller('NoteCreateController', function($http){
    var controller = this;
    this.saveNote = function(note){
        controller.errors = null;
        $http({method: 'POST', url: '/notes', data: note})
        .catch(function(note){
            controller.errors = note.data.error;
        })
    };
});
4

1 に答える 1

0

一般に、Javascript (または他の言語) では、「this」がそのように保存される理由の 1 つは、「this」の値が、同じクラス/オブジェクトの他の関数が呼び出されたときに期待されるものではないためです。ほとんどの場合、関数が UI から呼び出される場合、"this" の値は、クリックが発生した DOMElement またはサードパーティ オブジェクトになります。ただし、関数はオブジェクトに属しているため、通常は「this」がオブジェクト参照であると予想されます。

Javascript の「this」の値は、レキシカル スコープ (コード構造を見て) では判断できません。「this」の値は、問題の関数がどのように呼び出されたかに応じて、実行時に設定されます。

基本的に、他の関数からも正しいオブジェクトを参照できるように、実際の「this」への参照を保存しました。

「これ」を理解するには、この本を強くお勧めします: https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/README.md#you-dont-know -js-this--object-prototypes

于 2015-10-03T19:12:02.283 に答える