Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 使用Knockout通过click事件从JSON更新视图_Javascript_Jquery_Json_Model View Controller_Knockout.js - Fatal编程技术网

Javascript 使用Knockout通过click事件从JSON更新视图

Javascript 使用Knockout通过click事件从JSON更新视图,javascript,jquery,json,model-view-controller,knockout.js,Javascript,Jquery,Json,Model View Controller,Knockout.js,我正试图在每次使用敲除触发事件(例如,按钮单击)时更新视图模型。单击红色按钮时,应显示“红花”。单击蓝色时,应将其更改为“蓝天” 基本上,我只想单击一个按钮,用适当的数据更新视图。我觉得我很接近。我遗漏了什么,如何使用$.getJSON扩展此逻辑 小提琴: HTML: 你可以试试: $('.red').click(function() { var viewModel = ko.mapping.fromJS(data.colors[0]); ko.cleanNode(document);

我正试图在每次使用敲除触发事件(例如,按钮单击)时更新视图模型。单击红色按钮时,应显示“红花”。单击蓝色时,应将其更改为“蓝天”

基本上,我只想单击一个按钮,用适当的数据更新视图。我觉得我很接近。我遗漏了什么,如何使用
$.getJSON
扩展此逻辑

小提琴:

HTML: 你可以试试:

$('.red').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[0]);
  ko.cleanNode(document);
  ko.applyBindings(viewModel);
});

$('.blue').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[1]);
  ko.cleanNode(document);
  ko.applyBindings(viewModel);
});

它可以工作,但不是推荐使用knockout的方法。

您能澄清您想要做什么或修复您的JSFIDLE示例吗?目前没有做任何事情啊,对不起,让我重新回答这个问题。给我一点时间!非常感谢。你的方法确实管用,但如果我可以问一下,推荐的方法是什么?我对正确地执行此操作感兴趣,似乎您在引用observates(),因此我只绑定一次视图。我将如何实现同样的目标?也许我应该开始另一个问题…所有内容都应该在viewModel以及您的单击处理程序中。例如,您的视图模型应该是这样的:var viewModel={colors:ko.observearray([]),selectedColor:ko.observeable(),setColor:function(colorName){/*…*/};最好不要使用jQuery,但毕竟代码工作正常。
var data = {
  "colors": [{
    "name": "blue",
    "things": [{
      "item1": "sky",
      "item2": "ocean",
    }, ]
  }, {
    "name": "red",
    "things": [{
      "item1": "flower",
      "item2": "sun",
    }, ]
  }, ]
};

$('.red').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[0]);
});

$('.blue').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[1]);
});
$('.red').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[0]);
  ko.cleanNode(document);
  ko.applyBindings(viewModel);
});

$('.blue').click(function() {
  var viewModel = ko.mapping.fromJS(data.colors[1]);
  ko.cleanNode(document);
  ko.applyBindings(viewModel);
});