Knockout.js - понимание каждого и с - PullRequest
3 голосов
/ 29 марта 2012

Я изучал учебные пособия learn.knockout.js и экспериментировал. Может кто-нибудь объяснить, почему это работает [ Учебное пособие: одностраничные приложения, шаг 2 ] (с использованием with: chosenFolderData и foreach: mails):

<!-- Mails grid -->
<table class="mails" data-bind="with: chosenFolderData">
    <thead><tr><th>From</th><th>To</th><th>Subject</th><th>Date</th></tr></thead>
    <tbody data-bind="foreach: mails">
        <tr>
            <td data-bind="text: from"></td>
            <td data-bind="text: to"></td>
            <td data-bind="text: subject"></td>
            <td data-bind="text: date"></td>
        </tr>     
    </tbody>
</table>

, но не это (используя только foreach: chosenFolderData.mails):

<!-- Mails grid -->
<table class="mails">
    <thead><tr><th>From</th><th>To</th><th>Subject</th><th>Date</th></tr></thead>
    <tbody data-bind="foreach: chosenFolderData.mails">
        <tr>
            <td data-bind="text: from"></td>
            <td data-bind="text: to"></td>
            <td data-bind="text: subject"></td>
            <td data-bind="text: date"></td>
        </tr>     
    </tbody>
</table>

Я подозреваю это потому, что в то время как chosenFolderData является наблюдаемым, chosenFolderData.mails нет. Кто-нибудь может сказать мне наверняка?

Большое спасибо!

- Ральф

1 Ответ

6 голосов
/ 29 марта 2012

Поскольку вы на самом деле не обращаетесь к желаемому свойству так, как оно написано. В модели chosenFolderData является наблюдаемой и должна вызываться как метод для получения значения. Для обеспечения функциональности без использования with (и я предлагаю не использовать with там, где требуется высокая производительность из-за накладных расходов) ...

<tbody data-bind="foreach: chosenFolderData().mails">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...