Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Knockout.js knockoutjs MVC 4计算值_Knockout.js_Knockout Mapping Plugin_Knockout 2.0_Knockout Mvc - Fatal编程技术网

Knockout.js knockoutjs MVC 4计算值

Knockout.js knockoutjs MVC 4计算值,knockout.js,knockout-mapping-plugin,knockout-2.0,knockout-mvc,Knockout.js,Knockout Mapping Plugin,Knockout 2.0,Knockout Mvc,我有下面的视图模型 var viewModel = new myViewModel([{ Name: "Name", price: 32, tax: 22, }, { Name: "Name", price: 32, tax: 22, }]); 我有一个数据绑定到 <tbody dat

我有下面的视图模型

        var viewModel = new myViewModel([{
            Name: "Name",
            price: 32,
            tax: 22,
        }, {
            Name: "Name",
            price: 32,
            tax: 22,
        }]);
我有一个数据绑定到

       <tbody data-bind='foreach: personInfo'>
有什么想法吗

更新:

大概是这样的:


感谢

根据文档,在使用索引器访问数据之前,您需要使用Paranthesis访问KO包装的可观察阵列:

试着替换

self.PersonInfo[i].price


根据文档,在使用索引器访问数据之前,您需要使用Paranthesis访问KO包装的可观察数组:

试着替换

self.PersonInfo[i].price


有趣的是,他们必须更新网站:

答案是这样的

    self.totalSurcharge = ko.computed(function () {
    var total = 0;
    for (var i = 0; i < gifts.length; i++)
    total =total+ gifts[i].price;
    return total;
    });  
self.totalOverload=ko.computed(函数(){
var合计=0;
对于(变量i=0;i<1.length;i++)
总计=总计+礼品[i]。价格;
返回总数;
});  

有趣的是,他们必须更新网站:

答案是这样的

    self.totalSurcharge = ko.computed(function () {
    var total = 0;
    for (var i = 0; i < gifts.length; i++)
    total =total+ gifts[i].price;
    return total;
    });  
self.totalOverload=ko.computed(函数(){
var合计=0;
对于(变量i=0;i<1.length;i++)
总计=总计+礼品[i]。价格;
返回总数;
});  

我已经测试了下面的代码,它运行良好

按如下方式修改您的html:

 <tr>
     <td> Total of price here</td>
     <td data-bind="text:totalPrice"></td>
 </tr> 

这里的总价
在脚本中添加以下计算的可观测值以计算总价:

self.totalPrice = ko.computed({
    read: function() {
    var totalAmount = null;
    for(var i=0 , j=self.gifts().length ; i < j ; i++ )
    {
         totalAmount =Number(totalAmount)+ Number(self.gifts()[i].price);
    }
    if(totalAmount == 0){
        totalAmount = '0.00'
        }
    return totalAmount;
}
});
self.totalPrice=ko.computed({
读:函数(){
var totalAmount=null;
for(var i=0,j=self.gifts().length;i
我已经测试了下面的代码,它运行良好

按如下方式修改您的html:

 <tr>
     <td> Total of price here</td>
     <td data-bind="text:totalPrice"></td>
 </tr> 

这里的总价
在脚本中添加以下计算的可观测值以计算总价:

self.totalPrice = ko.computed({
    read: function() {
    var totalAmount = null;
    for(var i=0 , j=self.gifts().length ; i < j ; i++ )
    {
         totalAmount =Number(totalAmount)+ Number(self.gifts()[i].price);
    }
    if(totalAmount == 0){
        totalAmount = '0.00'
        }
    return totalAmount;
}
});
self.totalPrice=ko.computed({
读:函数(){
var totalAmount=null;
for(var i=0,j=self.gifts().length;i
您能否发布一个PersonInfo声明位置的示例,并描述您试图在何处定义可观测的TotalOverload?假设我想在此处显示total of price。这就是我想计算它的方式。你能举一个例子说明PersonInfo是在哪里声明的,并描述一下你试图在哪里定义TotalOverloadComputed observable?假设我想在这里显示Totalof price。这就是我想计算它的方式。这可能更好地让你知道我想怎么做。我尝试了这个,但它不起作用:(这可能更好地让你知道我想怎么做。我尝试了这个,但它不起作用:(谢谢你注意到下面的答案也起作用。我昨天发现的,我不必使用read。谢谢你注意到下面的答案也起作用。我昨天发现的,我不必使用read。