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