【问题标题】:setting ko observable inside a promise not working在承诺中设置 ko observable 不起作用
【发布时间】:2022-11-27 12:26:18
【问题描述】:

我在下面有一个视图模型(来自一篇关于 cloudkitjs 的文章)。问题是在 db 调用的返回中,可观察值没有改变。该页面将 recCount 显示为 3,即使 db 调用找到 40 条记录。

 function TILViewModel()
 {
    var self = this;
    console.log("get default container");
    var container = CloudKit.getDefaultContainer();


    var publicDB = container.privateCloudDatabase;

    self.myRecords = ko.observableArray();
    self.recCount = ko.observable(3);
    var recSet = [];
    // Fetch public records
    self.fetchRecords = function()
    {
        console.log("fetching records from " + publicDB);
        var query = { recordType: 'examRecord', sortBy: [{ fieldName: 'studyDate'}] };
  
        // Execute the query.
        return publicDB.performQuery(query).then(function(response)
        {
            if(response.hasErrors)
            {
               console.error(response.errors[0]);
               return;
            }
           var records = response.records;
           var numberOfRecords = records.length;
           if (numberOfRecords === 0)
           {
                console.error('No matching items');
                return;
           }
     
           console.log(records.length + " records")
          // self.myRecords(records); // this also fails      
          self.myRecords.push(recSet); // fails
          self.recCount = ko.observable(9); // fails
      });
  };

【问题讨论】:

    标签: javascript cloudkit-js


    【解决方案1】:

    你应该试试 this.recCount(numberOfRecords)。

    【讨论】:

    • 感谢您的建议。我也试过了。它仍然在网页上显示 3。我还使用了调试器,它显示了 40 条记录。有一些我不明白的范围问题,我是一个 javascript 新手。
    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2018-04-17
    • 2016-06-07
    • 1970-01-01
    • 2016-05-16
    • 2016-06-16
    • 2016-05-07
    • 2015-01-22
    相关资源
    最近更新 更多