2014-01-19 1 views
0

Все примеры, которые я вижу, предназначены для элементов DOM, которые явно написаны на странице. В моем случае я использую нокаутирующий Еогеасп, чтобы создать список элементов в моем наблюдаемом массиве:сделать объект массива нокаута видимым на основе значения id

<div class="tab-pane fade" id="recruiting"> 
    <input type="text" data-bind="value: selectedOrgKey" id="orgSectionId" onchange="FlipOrgView()" style="visibility: hidden;" /> 
    <ul class="list-unstyled" data-bind="foreach: orgs"> 
     <li data-bind="attr: { id: 'orgSection' + orgId}" class="orgSection"> 

Я в настоящее время использую запутано решение с помощью OnChange на скрытый элемент, чтобы захватить идентификатор и .Show () Это.

window.OrgDdlUpdated = function() { 
    $(".orgSection").hide(); 
    var selectedOrgId = $('#orgDropDown').val(); 
    //alert(selectedOrgId); 
    flipOrgView(selectedOrgId); 
}; 

var flipOrgView = function (id) { 
    $('#orgSection' + id).show(); 
}; 

Это технически работает, в первый раз, но, как я пролистывать все это, выбранный идентификатор отстает от того, где он показывает предыдущий выбор, а не текущий. Я знаю, что есть различные способы достижения этого, так что нокаут или иначе, как я могу правильно переключить видимость массива объектов, используя метод нокаута foreach?

ответ

1

как насчет:

<div class="tab-pane fade" id="recruiting"> 
    <input type="text" data-bind="value: selectedOrgKey" id="orgSectionId" style="visibility: hidden;" /> 
    <ul class="list-unstyled" data-bind="foreach: orgs"> 
     <li data-bind="visible: $parent.selectedOrgKey() === orgId(), attr: { id: 'orgSection' + orgId}" class="orgSection"> 

им не слишком уверены в вашем примере, как вы настраиваете selectedOrgKey, но это должно сделать поведение MVVM я думаю, что вы получаете в.

+0

А, спасибо. Это убивало мой мозг. Или отсутствие мозга. – ledgeJumper

+1

@ davidisawesome np рад помочь :) –

Смежные вопросы