我正在使用淘汰赛和Ryan Niemeyers ko.sortable。 我的目标是将物品从一个容器移动到另一个容器。这很好用。 但是,由于其他情况,我希望将observableArrays对象拖放到ko.computed。
我有一个包含所有元素的基本数组
self.Textbatches = ko.observableArray();
然后我有一个过滤版本
self.TextsTypeOne = ko.computed(function(){
return ko.utils.arrayFilter(self.Textbatches(),function(t){
return t.type() === '1';
});
});
我有另一个带有文本拖动的过滤列表:
self.allocationableTextbatches = ko.computed(function(){
return ko.utils.arrayFilter(self.Textbatches(),function(t){
return t.type() === null;
});
});
然后用'self.TextsTypeOne'和'self.allocationableTextbatches'创建我的两个容器:
<div id="allocationable-texts" class="menupanel">
<h4 class="select">Text(s) to allocate:</h4>
<div class="tb-table">
<div class="tb-list" data-bind="sortable:{template:'textbatchTmpl',data:$root.allocationableTextbatches,allowDrop:true}"></div>
</div>
</div>
<div id="TypeOne-texts" class="menupanel">
<h4 class="select">Text(s) on scene:</h4>
<div class="tb-table">
<div class="tb-list" data-bind="sortable:{template:'textbatchTmpl',data:$root.TextsTypeOne,allowDrop:true}"></div>
</div>
</div>
,其中
<script id="textbatchTmpl" type="text/html"><div class="textbatch" data-bind="click: $root.selectedText">
<span class="tb-title" data-bind="text: title"></span>
我可以轻松地将模板设置类型的按钮分别添加到“null”和“1”,并使其按照这种方式工作。但是我希望这是一个拖放功能(以及)和ko.sortable在jquery-ui对象上工作。因此它需要'ordinary''ko.observableArrays'而不是'ko.computed',因为它'拼接'observableArray,并且拖放导致错误“TypeError:k.splice不是函数”。
我试图让'self.allocationableTextbatches'和'self.TextsTypeOne'可写计算,但无济于事。
任何帮助和建议都非常值得赞赏!
提前致谢!