2016-07-11 41 views
0

根據以下示例,我將父集合(source: $parent.myThing.children)傳遞到自定義綁定中。我想知道在上下文中是否有任何內容告訴我父級集合在不知道名稱的情況下?在不知道名稱的情況下獲取對foreach綁定中的集合的引用

<div data-bind="foreach: myThing.children"> 
    <button data-bind="arrayMoveUp: { item: $data, source: $parent.myThing.children }"> 
     <i class="fa fa-arrow-up"></i> Up 
    </button> 
    <button data-bind="arrayMoveDown: { item: $data, source: $parent.myThing.children }"> 
     <i class="fa fa-arrow-down"></i> Down 
    </button> 
</div> 

例如我希望能夠做到像source: $source然後會通過什麼的foreach必然。

回答

2

我不認爲它是默認可訪問的。您可以創建自定義擴展foreach結合,它增加了bindingContext雖然...

ko.bindingHandlers.customForEach = { 
 
    init: function(element, valueAccessor, allBindings, viewModel, bindingContext) { 
 
    ko.utils.extend(bindingContext, { 
 
     '$arraySource': ko.unwrap(valueAccessor()) 
 
    }); 
 

 
    return ko.bindingHandlers.foreach.init.apply(null, arguments); 
 
    }, 
 
    update: function() { 
 
    return ko.bindingHandlers.foreach.update.apply(null, arguments); 
 
    } 
 
}; 
 

 

 
ko.applyBindings({ 
 
    items: [1, 2, 3, 4, 5, 6] 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<ul data-bind="customForEach: items"> 
 
    <li> 
 
    <span data-bind="text: $arraySource[$index() - 1]"></span> - 
 
    <strong data-bind="text: $data"></strong> - 
 
    <span data-bind="text: $arraySource[$index() + 1]"></span> - 
 
    </li> 
 
</ul>

相關問題