Object 每个计算值的剔除
我正在尝试向viewModel对象添加计算值。我正在使用foreach创建一个行表。我无法绕过这个计算函数 我正在努力做到这一点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 =
{
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中的类实例。通过这种方法,我能够在类中使用计算函数。