Object 每个计算值的剔除

Object 每个计算值的剔除,object,knockout.js,foreach,viewmodel,computed-field,Object,Knockout.js,Foreach,Viewmodel,Computed Field,我正在尝试向viewModel对象添加计算值。我正在使用foreach创建一个行表。我无法绕过这个计算函数 我正在努力做到这一点 viewModel = { objectName: ko.observable([ { value: "", triggerValue: "0"}, { value: "", triggerValue: "1"}, { value: "", triggerValue: "1"} ]), }; viewMod

我正在尝试向viewModel对象添加计算值。我正在使用foreach创建一个行表。我无法绕过这个计算函数

我正在努力做到这一点

viewModel =
 {
   objectName: ko.observable([
       { value: "", triggerValue: "0"},
       { value: "", triggerValue: "1"},
       { value: "", triggerValue: "1"} 
   ]),
 };

viewModel.objectName().value= ko.computed(function() {
      return this.objectName().triggerValue= "0" ? "Apple" : "Microsoft";
    }, this);
我希望ViewModelObjectName输出如下所示

{value: "Apple", triggerValue: "0"},
{value: "Microsoft", triggerValue: "1"},
{value: "Microsoft", triggerValue: "1"}
谢谢。
KDK

这里发生了几个错误

您使用的是observable而不是observableArray,从技术上讲,observableArray可以存储数组,但您最好使用observableArray 您正在尝试将计算对象绑定到objectName.value,但假定对象名称是一个数组,因此它不会有值,理想情况下,它将类似于objectName[1].value。 这不是如何分配属性,ko.computed不是函数的替代品,computed用于监控现有观测值,并在其中一个监控观测值发生变化时重新计算。 我会这样做

viewModel =
 {
   objectName: ko.observable([
     { value: setType(0), triggerValue: "0"},
     { value: setType(1), triggerValue: "1"},
     { value: setType(1), triggerValue: "1"} 
 ]),
};

function setType(trigger){
   return trigger = "0" ? "Apple" : "Microsoft"
}
或者更好

viewModel =
 {
   objectName: ko.observable([
   setVal(0),
   setVal(1),
   setVal(1), 
 ]),
};

function setVal(trigger){
   return {value: (trigger = "0" ? "Apple" : "Microsoft"), triggerValue: trigger };
}

非常感谢。我创建了一个具有可观察成员的类,并且使用viewModel中的类实例。通过这种方法,我能够在类中使用计算函数。