2015-08-27 3 views
0
<script type="text/html" id="RevealPanelStart"> 
    <div class="alert alert-danger" data-bind="visible:$root.addToBasketPreviewDisplayed">Before you add to basket, please check you are happy with the options selected below:</div> 
    <div class="revealpanel" data-bind="visible:$root.previewClicked, template: { name:$root.templateToUse, foreach:Fields }" style="display: none;"> 
    </div> 
</script> 

Это может появляться несколько раз по всему коду. Есть ли в любом случае я могу показать первый addToBasketPreviewDisplayed?Нокаут/Подчеркивание - привязка данных к первому div

Я устал:

_.first(model.addToBasketPreviewDisplayed(true)); 
model.addToBasketPreviewDisplayed(true).first; 

Спасибо,

Clare

ответ

0

Существует только один addToBasketPreviewDisplayed. Вы указываете, что это член вашей (корневой) модели. Неважно, сколько раз он появляется в HTML, все это ссылается на одно и то же, если только это не часть компонента, и в этом случае вы хотите найти первый компонент. Суть в том, что вы должны смотреть на свою модель просмотра для того, как структурируются ваши данные. Представление - это то, как представлена ​​viewmodel.

+0

Вышеупомянутый код находится в файле js. Я думал примерно так: if (model.isValid()) { \t // Только измените это на true на первом div \t model.addToBasketPreviewDisplayed (true); }, но я не знаю, что помещать внутри, если я не выпрыгну из нокаута и не сделаю это в js, используя $ (...). First(). Show()? –

+0

Можете ли вы сделать очень маленькую скрипку, которая демонстрирует вашу проблему? Я думаю, проблема в вашем дизайне viewmodel. 'addToBasketPreviewDisplayed' не должен быть частью корневой модели. –