Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 敲除将可观测和计算数据推送到可观测阵列_Javascript_Jquery_Knockout.js_Data Binding_Knockout Components - Fatal编程技术网

Javascript 敲除将可观测和计算数据推送到可观测阵列

Javascript 敲除将可观测和计算数据推送到可观测阵列,javascript,jquery,knockout.js,data-binding,knockout-components,Javascript,Jquery,Knockout.js,Data Binding,Knockout Components,我试图推送多个数据(firstname和lastname),当我计算firstname和lastname并试图将数据推送到同一个数组中时,我遇到了一个错误。下面是我的代码 视图模型: var viewModel = function () { var self = this; self.gameofthrones = ko.observableArray ([ {firstname: 'Jon', lastname: 'Snow'}, {firstname: 'Rob

我试图推送多个数据(firstname和lastname),当我计算firstname和lastname并试图将数据推送到同一个数组中时,我遇到了一个错误。下面是我的代码

视图模型:

var viewModel = function () {

  var self = this;

  self.gameofthrones = ko.observableArray ([
    {firstname: 'Jon', lastname: 'Snow'},
    {firstname: 'Robb', lastname: 'Stark'}
  ]);

  self.firstname = ko.observable('');
  self.lastname = ko.observable('');
  for (var i=0; i<self.gameofthrones().length; i++) {
    self.gameofthrones()[i].fullname = ko.computed (function () {
      return self.gameofthrones()[i].firstname+" "+self.gameofthrones()[i].lastname;
    })
  };

  $('#classic').click( function() {
    self.gameofthrones.push(
      {firstname: $('#fn').val(), lastname: $('#pr').val()}
    );
  });
}
ko.applyBindings(new viewModel());
var viewModel=函数(){
var self=这个;
self.gameoftrones=ko.array([
{姓:“乔”,姓“雪”},
{姓:“罗布”,姓:“斯塔克”}
]);
self.firstname=ko.可观察(“”);
self.lastname=ko.可观察(“”);

对于(var i=0;i如果向gameofthrone数组的每个对象添加全名计算函数,则在将新对象推送到数组时,需要执行相同的操作,因为默认情况下,它没有全名计算函数

有很多方法可以实现这一点,但我认为最简单的方法是创建一个函数,在gameofthrone的可观察数组之外获取全名。然后使用
$parent
从foreach内部调用该函数

var viewModel=函数(){
var self=这个;
self.gameoftrones=ko.array([
{姓:“乔”,姓“雪”},
{姓:“罗布”,姓:“斯塔克”}
]);
self.getFullName=函数(名称){
返回name.firstname+“”+name.lastname;
}
}
ko.applyBindings(newviewmodel());

名字:
姓氏:
全名:

<form class="" action="index.html" method="post">
  <input type="text" name="name" data-bind="value: firstname" id="fn">
  <input type="text" name="name" data-bind="value: lastname" id="pr">
  <button id="classic" type="button" name="Submit">Submit</button>
</form>

<div data-bind="foreach: gameofthrones">
  Firstname: <span data-bind="text: firstname"></span><br>
  LastName: <span data-bind="text: lastname"></span><br>
  Fullname: <span data-bind="text: fullname"></span><br><br>
</div>