【问题标题】:Knockout Js Array.removeAll() not working淘汰赛 Js Array.removeAll() 不工作
【发布时间】: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


【解决方案1】:

这不是有效的 Javascript 并且会出错,这可能是您问题的根源:

var dataArray = ko.observableArray([Lst:Lst(), Lst:Lst1(), Lst:Lst2()]);

我怀疑你想要这样的东西(尽管 Lst()、Lst1() 和 Lst2() 没有在你提供的代码中定义,这又会出错)。

var dataArray = ko.observableArray([Lst.Lst(), Lst.Lst1(), Lst.Lst2()]);

您提供的用于删除元素的 KO 代码很好。

【讨论】:

  • Lst1 和 Lst2 未定义。按 F12 并查看控制台...您几乎肯定会遇到错误。
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2023-03-13
  • 2012-01-30
  • 2013-05-27
相关资源
最近更新 更多