foreach:绑定不起作用 ko.mapping.fromJS 数据

foreach: binding not working ko.mapping.fromJS data

本文关键字:mapping fromJS 数据 ko 不起作用 绑定 foreach      更新时间:2023-09-26

我正在尝试显示我使用 ko.mapping.fromJS 从 JSON 请求(见下文)获得的作业列表(使用 foreach),但它显示为空白。JSON 数据似乎已正确加载到可观察量数组中,但不会在 HTML 中呈现????

这实际上是移动Web应用程序(Jquery Mobile)的一部分,因此数据显示在第二页上,不确定这是否有所不同(我在开始时加载所有代码)

网页(简体)

<ul  data-bind="foreach: JobsToday " >
 <li>   <span data-bind="text: job_id"> </span>   </li>
 </ul>

JSON 数据(简化)

[{"job_id":"1753","driver_id":"23"},{"job_id":"1754","driver_id":"23"}]

JAVASCRIPT

    <script type="text/javascript">
    var JobsToday=ko.observableArray([]);  // observable array holds the jobs  for the current day  
 function DispatchModel(){
    self = this;  //cache the current context
    self.userd_id= 0;
        $.getJSON(controller_php_script+"/",  {'action' : 'list_driver_jobs', 'driver_id' : self.user_id}, function(jobsData) 
        {
     self.JobsModelArray= ko.mapping.fromJS(jobsData); // get the jobs
         JobsToday =self.JobsModelArray;  //assign to global observable
 //print out the observablbles to make sure data is three
      console.log( " JobsModelArray: "+   ko.toJSON( JobsToday ) );  
                });
} //end of DispatchModel

// Start of our  main function 
$(document).ready(function () {
    var vm = new DispatchModel();   //create the Dispatch VMM
    ko.applyBindings(vm);  //knockout.js apply the binding
});  //end $(document).ready
    </script>

JobsToday可观察数组位于视图模型函数之外。由于您将表单绑定到DisplayModel,因此不能绑定到。在函数内移动JobsToday

 function DispatchModel(){
    self = this;  //cache the current context
    self.JobsToday=ko.observableArray([]);  // observable array holds the jobs  for the current day  

第二个问题是将JobsToday设置为映射的数据。这是淘汰赛初学者的常见错误。您可以通过函数设置可观察量,而不是直接设置。这样会更好:

var mapped = ko.mapping.fromJS(jobsData); // get the jobs
self.JobsToday(mapped);  //assign to observableArray