繁体   English   中英

将对象从数组推送到observableArray

[英]push object from an array to observableArray

因此,当使用带挖空功能的复选框调用时,我试图将存储在数组中的对象推送到可观察数组。

HTML:

<input type="checkbox" data-bind="checked: checked, click: $root.saveSelected"/>

JS:

var definition = [
      {title: 'some text', checked: ko.observable(false), definition: '<p>Some HTML</p>'}
],

var viewModel = {

selectedItems: ko.observableArray([]),

saveSelected: function() {
      for (var i = 0; i < definition.length; ++i) {
        if (viewModel.definition[i].checked().value === true) {
          viewModel.selectedItems.push(definition[i]);
        }
      }
    }

因此,我很确定我的if语句是导致此问题的原因,但我不确定自己做错了什么。 但是结果应该是,对于每个选中的复选框,该对象(现在“ checked”的值为true)应该被推送到selectedItems数组,以便(在本示例中)空白的selectedItems数组应该具有该对象

{title: 'some text', checked: ko.observable(false), definition: '<p>Some HTML</p>'} 

在其中运行saveSelection函数之后。

-编辑-此代码的小提琴: http : //jsfiddle.net/imagitron/mMc6k/6/

访问选中的可观察对象时,请删除“ .value”:

if (viewModel.definition[i].checked() === true) {
...

敲除管理设定value的HTML <input>控制。 您只需要知道它是可观察的,则可以是truefalse值。

首先, click: $root.saveSelectedsaveSelection: function() {不匹配saveSelection: function() {

第二期

for (var i = 0; i < definition.length; ++i) {
    if (viewModel.definition[i].checked() === true) {

定义和viewModel.definition是这里的两个分开的东西。 viewModel.definition实际上是先保存一个空数组。 因此,viewModel.definition [i]无法正常工作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM