0

KnockoutJS の例を見ていくうちに、以下のコードを見ました。

function WebmailViewModel() {
    // Data
    var self = this;
    self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
    self.chosenFolderId = ko.observable();

    // Behaviours    
    self.goToFolder = function(folder) { self.chosenFolderId(folder); };    
};

ko.applyBindings(new WebmailViewModel());

私はJavascriptの専門家ではありませんが、使用法に少し混乱していますself.chosenFolderId(folder);

selectedFolderId はプロパティであり、割り当てられます。ko.observable();他の言語での経験から、

  1. 次のような引数を渡して呼び出すにはどうすればよいですかself.chosenFolderId(folder);
  2. フォルダ定義はどこにありますか?

これを説明する記事を指し示すことができれば、それで十分です。

ありがとう。

4

3 に答える 3

1

chosenFolderIdはプロパティですが、プロパティは関数である場合があります (この場合は関数である必要があります)。

そのko.observableため、単一の引数 (フォルダー) を取る関数を返します。

次の行と違いはありません。

self.goToFolder = function(folder) { ... };

goToFolderプロパティが関数に設定されている場所。

folder自体は、のパラメータとしてパラメータとして「定義」されていgoToFolderます。どんな呼び出し goToFolderでも に値を提供しますfolder

于 2012-05-30T18:38:58.280 に答える
0

JavaScript の関数はファーストクラスのオブジェクトです。ko.observable()は関数呼び出しであり、その戻り値自体が関数です。

基本的に、私は次のようなことができます:

var observable = function(some_param) {
  return function(some_other_param) {
    // do something useful here
  }
}

それから私は呼び出すことができます:

observable(1)(2);
于 2012-05-30T18:38:51.227 に答える
0

JavaScript では、関数を変数に割り当てたり、引数として関数に渡したり、関数から返されたりすることができます。つまり、ファーストクラスです。

于 2012-05-30T18:39:08.143 に答える