javascript - knockout 帮助获取外部数据

标签 javascript jquery knockout.js

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

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

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。

我还必须从 file://运行它,因为它需要发送到某个地方

<小时/>

所以我已经更新了我的代码来执行此操作

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);
});

关于javascript - knockout 帮助获取外部数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129375/

相关文章:

javascript - 需要通过 jQuery 定位元素,请 <3

javascript - 如何处理或最小化 jquery 中的紧耦合

php - 使用AJAX插入记录不插入和刷新页面

javascript - 确定是否在 Kendo Mobile View 中单击了后退按钮?

javascript - KnockoutJS IF 绑定(bind) - 保留 DOM

html - 想一次只显示列表中的 2 个名字,然后单击接下来的 2 个名字按钮,但有一个错误

javascript - d3.scale.log无法读取未定义的属性日志

javascript - jQuery 将选中的复选框存储到数组中

javascript - Angular JS 方法未使用 Wcf 服务定义

javascript - RequireJS 模块从 API 服务器接收 JSON,返回未定义?