Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 foreach:绑定不起作用ko.mapping.fromJS数据_Javascript_Knockout.js - Fatal编程技术网

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

Javascript foreach:绑定不起作用ko.mapping.fromJS数据,javascript,knockout.js,Javascript,Knockout.js,我试图使用ko.mapping.fromJS显示从JSON请求(见下文)中获得的作业列表(使用foreach),但结果为空。。JSON数据似乎已正确加载到observables数组中,但未在HTML中呈现 这实际上是移动web应用程序(Jquery mobile)的一部分,因此数据显示在第二页上,不确定这是否有区别(我在开始时加载了所有代码) HTML(简化版) JAVASCRIPT <script type="text/javascript"> var JobsTo

我试图使用ko.mapping.fromJS显示从JSON请求(见下文)中获得的作业列表(使用foreach),但结果为空。。JSON数据似乎已正确加载到observables数组中,但未在HTML中呈现

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

HTML(简化版)

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>

var JobsToday=ko.observearray([]);//可观测数组保留当天的作业
函数DispatchModel(){
self=this;//缓存当前上下文
self.userd_id=0;
$.getJSON(controller_php_script+“/”,{'action':'list_driver_jobs','driver_id':self.user_id},函数(jobsData)
{
self.JobsModelArray=ko.mapping.fromJS(jobsData);//获取作业
JobsToday=self.JobsModelArray;//分配给全局可观察对象
//打印出可观察的数据,确保数据为3
log(“JobsModelArray:+ko.toJSON(JobsToday));
});
}//DispatchModel结束
//开始我们的主要功能
$(文档).ready(函数(){
var vm=new DispatchModel();//创建调度VMM
ko.applyBindings(vm);//knockout.js应用绑定
});  //结束$(文档)。准备好了吗

JobsToday可观测阵列不在视图模型功能范围内。由于已将表单绑定到
DisplayModel
,因此无法将其绑定到。将作业当天移动到函数内

 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

是的,你让我走上了正确的道路,我整合了几个变量,发现命令:ko.mapping.fromJS(jobsData,{},self.JobsToday);//将用户驱动程序数据映射到该模型,并执行此操作。。。是的,记得用object(assign_me)和equals来分配object。。这是钥匙,谢谢。
 function DispatchModel(){

    self = this;  //cache the current context
    self.JobsToday=ko.observableArray([]);  // observable array holds the jobs  for the current day  
var mapped = ko.mapping.fromJS(jobsData); // get the jobs
self.JobsToday(mapped);  //assign to observableArray