Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰:将值从控制器传递到视图,然后从视图传递到viewmodel_Javascript_Knockout.js - Fatal编程技术网

Javascript 淘汰:将值从控制器传递到视图,然后从视图传递到viewmodel

Javascript 淘汰:将值从控制器传递到视图,然后从视图传递到viewmodel,javascript,knockout.js,Javascript,Knockout.js,我是个新手。基本上,我需要从控制器获得一个项目数组(价格和数量对),然后在我的视图上显示它。但是在显示它之前,我想使用knockout在viewmodel中进行一些计算(计算小计),然后将新数组传递给视图。我知道我可以将原始数组绑定到我的视图。但是如何将此数组传递给viewmodel 您不会从视图传递到viewmodel,反之亦然。控制器将数据传递给绑定到视图的viewmodel。我离题了 有几种不同的技术,但一种常见的技术是将数据映射为可观察值。Knockout有一个helper方法array

我是个新手。基本上,我需要从控制器获得一个项目数组(价格和数量对),然后在我的视图上显示它。但是在显示它之前,我想使用knockout在viewmodel中进行一些计算(计算小计),然后将新数组传递给视图。我知道我可以将原始数组绑定到我的视图。但是如何将此数组传递给viewmodel

您不会从视图传递到viewmodel,反之亦然。控制器将数据传递给绑定到视图的viewmodel。我离题了

有几种不同的技术,但一种常见的技术是将数据映射为可观察值。Knockout有一个helper方法
arrayMap
,它将帮助将数组中的项转换为可观察项。下面是一个例子:

var项=函数(数据){
var self=这个;
self.Name=ko.observable(data.Name);
self.Price=ko.observable(data.Price);
自身数量=可观察到的ko(数据数量);
self.Total=ko.pureComputed(函数(){return self.Price()*self.Qty();});
}
var viewModel=函数(){
var self=这个;
//项目清单
self.Data=ko.observearray([]);
//模拟ajax调用以获取数据
self.Load=function(){
风险值数据=[
{名称:“A”,价格:12.34,数量:1},
{名称:“B”,价格:23.45,数量:2},
{名称:“C”,价格:1234.56,数量:3}
];
var mappedData=ko.utils.arrayMap(数据、函数(项){
返回新项目(项目);
});
此.Data(mappedData);
}
}
var vm=new viewModel();
ko.应用绑定(vm)

  • 姓名: 数量: 价格: 总数:
单击按钮以模拟来自API的加载
加载

请共享代码很难想象您的代码被卡住了。很抱歉,我刚刚意识到我忘了在这个模型中添加小计,但这应该很容易做到。将计算值添加到
viewModel
中,并使用
ko.utils.arrayForEach
命令将每一行相加。