敲除帮助获取外部数据

knockout help getting external data

本文关键字:外部 数据 获取 帮助      更新时间:2023-09-26

我刚刚完成了淘汰教程,现在我正在尝试从外部页面获取数据。

在教程中,他们使用以下代码:

self.seats = ko.observableArray([
        new SeatReservation("Steve", "Standard (sandwich)", "34.95" ),
        new SeatReservation("Paul", "Standard (sandwich)", "14.95" )
       ])

我想更新它,从一个外部文件中提取循环通过选项:

self.seats = ko.observableArray([
  
  $.get( "scripts/test.js", function( data ) {
  			
    
    
     $(data.data).each(function(index, result) { 
  
         new SeatReservation(result.name, result.mealName, result.price )
     })  
     
   })
     
     
  
  )]

测试结构为:

var data = [
  {
    'mealName': 'Standard (sandwich)',
    'price': '0',
  },
  {
    'mealName': 'Main (sandwich)',
    'price': '34.95',
  }
];

我还需要做什么?

我在页面上包含了jQuery和Knockout。

我还必须从文件运行这个://因为它需要发送到的某个地方


所以我已经更新了我的代码来做这个

var newData = ko.utils.arrayForEach(data, function(item){
		console.log(item)
		console.log(item.firstName + " " + item.lastName + " " + item.price);
		
		return new SeatReservation(item.firstName, item.lastName, item.price);
        
		
	});
        console.log("here");    		
        console.log(newData);
	  	self.seats(newData);

控制台正在按预期记录项目的数据,但返回没有执行任何操作,console.log(newData)返回未定义的

为什么会这样?

根据目前的情况,您正在丢弃ajax调用的结果。你需要做一些类似的事情

$.get( "scripts/test.js", function( data ) {
  self.availableMeals = data;
});

然而,由于self.availableResults不是一个knockoutjs ObservableArray,页面将不会通过ajax调用响应来自服务器的更改。

你会想做这样的事情。

self.seats= ko.observableArray();
$.get( "scripts/test.js", function( data ) {
  var newData = ko.utils.arrayForEach(data, function(item){
    return new SeatReservation("", item.mealName, item.price);
  });
  self.seats(newData);
});