【发布时间】:2015-05-01 16:07:22
【问题描述】:
var x=ko.observableArray([....]);
x.removeAll();
情况是“x”保存从下拉列表中选择的值,这些下拉列表是使用剔除动态生成的。我想清除用户所做的所有选择。
上面的代码在我的情况下不起作用,所以我必须使用 for 循环“取消定义”数组中的每个元素 - 这是一种非常糟糕的方式(我觉得)。我想知道有没有更好的方法?
我也试过这个:
x([]);
这也不起作用。
我的代码看起来像这样
var data_Main = [
{[a,b,c] },{[d,e,f]},{[g,h,i]}
];
var selectedKoArray= ko.observableArray([]);
var Lst=ko.observableArray([
{Txt: 'aaa', Val: 'a'},
{Txt: 'bbb', Val: 'b'},
{Txt: 'ccc', Val: 'c'}
]);
var dataArray = ko.observableArray([Lst:Lst(), Lst:Lst1(), Lst:Lst2()]);
var selectedHFilters = ko.observableArray([]);
for (var i = 0; i < dataArray.length - 1; i++) {
if (selectedKoArray[i])
selectedKoArray[i] = undefined;
}
-----------------------------------------------------HTML-------------------------------
<div data-bind="foreach:dataArrayKO ">
<select class="select2-offscreen filter-select" data-bind="options:Lst, optionsText: 'Txt', optionsValue: 'Val', optionsCaption: '-Select-', value:$root.selectedHFilters[$index()]"></select>
</div>
【问题讨论】:
-
我试过'remove'和'removeAll'
-
您能否提供足够的(minimal)HTML 和 JavaScript 来重现您的问题中的问题?
-
在您正在开发的脚本中,您能否添加
console.log(typeof x);以确保x是 在您调用removeAll的位置是一个observableArray ?也许它在声明和对removeAll的调用之间被修改。另外,你怎么知道它不起作用?可观察数组中还有元素还是有异常? -
@David 我知道你需要它,但创建所有相同的环境非常困难
标签: javascript jquery knockout.js