1

私は公式ウェブサイトからチュートリアルを行っています:

ノックアウトシングルページアプリケーションレッスン

これはビューです:

<!-- Folders -->
<ul class="folders" data-bind="foreach: folders">
    <li data-bind="text: $data, 
                   css: { selected: $data == $root.chosenFolderId() },
                   click: $root.goToFolder"></li>
</ul>

およびスクリプト:

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());

私は2つのことを理解していません:

  1. 'click:'イベントはjavascript関数goToFolderを呼び出していますが、引数がない場合、chosenFolderIdを設定するためにクリックされたフォルダーをどのように認識しますか?

  2. 私が間違っている場合は訂正してください。行css:{selected:$ data == $ root.chosenFolderId()}は、現在選択されているオブジェクト$ dataがchoosedFolderId()と等しい場合、選択された名前のcssが有効になっていることを意味します。

みんな乾杯

4

1 に答える 1

2

答えは次のとおりです。

  1. デフォルトでは、ノックアウトは呼び出される関数に現在のコンテキストを渡します。あなたの場合、これは$data次の文字列のいずれかを含むオブジェクトです'Inbox'、'Archive'、'Sent'、'Spam'。

  2. はい、その通りです。これは、$がビューモデルのプロパティに等しい要素selectedにcssクラスが適用されることを意味します。<li>datachosenFolderId

于 2012-10-04T13:17:19.883 に答える