Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 从数组计算和_Arrays_Knockout.js_Observable - Fatal编程技术网

Arrays 从数组计算和

Arrays 从数组计算和,arrays,knockout.js,observable,Arrays,Knockout.js,Observable,我有一个浮动数组weeklyAmounts,在子对象a中定义。在父对象b中,我有一个对象a数组,需要计算所有子对象a的week1小计,以及所有子对象a的week2小计,等等 我的问题是: 通过阅读敲除文档,可以跟踪事件(如删除或添加)上的可观察数组,但不跟踪单个对象的状态更改,因此在我的情况下,即使用户从GUI更改了week1Amount,它也不会触发计算值。这是真的吗 在GUI中更改week1Amount后,我没有看到viewmodel中的值发生了更改,这让我感到惊讶。我错过什么了吗 考虑到需

我有一个浮动数组
weeklyAmounts
,在子对象
a
中定义。在父对象
b
中,我有一个对象
a
数组,需要计算所有子对象
a
的week1小计,以及所有子对象
a
的week2小计,等等

我的问题是:

  • 通过阅读敲除文档,可以跟踪事件(如删除或添加)上的可观察数组,但不跟踪单个对象的状态更改,因此在我的情况下,即使用户从GUI更改了
    week1Amount
    ,它也不会触发计算值。这是真的吗
  • 在GUI中更改
    week1Amount
    后,我没有看到viewmodel中的值发生了更改,这让我感到惊讶。我错过什么了吗
  • 考虑到需要什么,最好的解决方案是什么
  • 我的非工作代码如下:

    function a(id, name, week1Amount, week2Amount, week3Amount, week4Amount,
    week5Amount, week6Amount, week7Amount, week8Amount, week9Amount, week10Amount...) {
    var self = this;
    self.id = id;
    self.name = name;
      self.week1Amount = ko.observable(week1Amount);
      self.week2Amount = ko.observable(week2Amount);
      self.week3Amount = ko.observable(week3Amount);
      self.week4Amount = ko.observable(week4Amount);
      self.week5Amount = ko.observable(week5Amount);
      self.week6Amount = ko.observable(week6Amount);
      self.week7Amount = ko.observable(week7Amount);
      self.week8Amount = ko.observable(week8Amount);
      self.week9Amount = ko.observable(week9Amount);
      self.week10Amount = ko.observable(week10Amount);
      self.week11Amount = ko.observable(week11Amount);
      self.week12Amount = ko.observable(week12Amount);
        };
    
    
        function b(bid, bname, as) {
        var self = this;
      self.id= bid;
      self.name = bname;
      self.as = as;
      self.week1Sum = ko.computed(function () {
          var sum = 0.0;
          $(self.as).each(function (index, aItem) {
            sum += aItem.week1Amount();
          });
          return sum;
      });
        //rest of code is omitted for brevity. 
        };
    
          var objBs = [];
    
          $(objAs).each(function (index, aItem) {
            var newA = new a(aItem.ID, aItem.Name,  
        aItem.WeeklyAmount[0],aItem.WeeklyAmount[1],aItem.WeeklyAmount[2],aItem.WeeklyAmount[3],
        aItem.WeeklyAmount[4],aItem.WeeklyAmount[5],aItem.WeeklyAmount[6],....);
        objBs.push(newA);
        });
    
    var vmB = new b(1,"someName", objBs);
    
        ko.applyBindings(vmB, document.getElementById("showBs"));
    

    您从未使用函数b?b是视图模型。我修改了密码。谢谢,你从哪里得到objA?