嘗試使用foreach命令列表並將列表項隨機洗牌。我創建了一個函數(randomOrder)並將其用於綁定在foreach項目上。 似乎沒有任何工作。在Knockout.js中隨機化Foreach列表項
HTML:
<ol data-bind="foreach: { data: docs, randomOrder: true} ">
<li class="result" data-bind="component: { name: 'physicianreferral.docresult', params: { doc: $data } }"></li>
</ol>
JS:
ko.bindingHandlers.randomOrder = {
init: function (elem, valueAccessor) {
// Build an array of child elements
var child = ko.virtualElements.firstChild(elem),
childElems = [];
while (child) {
childElems.push(child);
child = ko.virtualElements.nextSibling(child);
}
// Remove them all, then put them back in a random order
ko.virtualElements.emptyNode(elem);
while (childElems.length) {
var randomIndex = Math.floor(Math.random() * childElems.length),
chosenChild = childElems.splice(randomIndex, 1);
ko.virtualElements.prepend(elem, chosenChild[0]);
}
}
};
ko.virtualElements.allowedBindings.randomOrder = true;
邁克爾,這是真正有用的,先生。我認爲我正確實現了你的想法,但由於某種原因我得到這個錯誤: 錯誤:Uncaught ReferenceError:無法處理綁定「foreach:function(){return randomize(docs)}」消息:randomize未定義 –
對於'randomize'在綁定中可用,它應該是全局函數('window.randomize = ...')或視圖模型。 –
有道理!星期一我會出手。再次感謝邁克爾! –