Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 在$scope对象数组上使用.push()不会';t将推送对象添加到数组中_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript 在$scope对象数组上使用.push()不会';t将推送对象添加到数组中

Javascript 在$scope对象数组上使用.push()不会';t将推送对象添加到数组中,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我正在尝试接受来自表单的用户输入。我可以成功访问输入并将数据从对象打印到控制台,但当我尝试将此对象推送到存储在控制器中的对象数组时,它不起作用 下面是我的一段代码: $scope.dogs = [ { name: "Blinky", age: "2", owner: "Martha Franklin", vaccinated: "Y" }, { name: "Spot", age: "4",

我正在尝试接受来自表单的用户输入。我可以成功访问输入并将数据从对象打印到控制台,但当我尝试将此对象推送到存储在控制器中的对象数组时,它不起作用

下面是我的一段代码:

$scope.dogs = [
    {
      name: "Blinky",
      age: "2",
      owner: "Martha Franklin",
      vaccinated: "Y"
    },
    {
      name: "Spot",
      age: "4",
      owner: "Martha Franklin",
      vaccinated: "Y"
    }];

$scope.dog = {
      name: "",
      age: "",
      owner: "",
      vaccinated: ""
    };

$scope.savePet = function(){
  //console.log($scope.dog.name); This prints the name in the input HTML form
  $scope.dogs.push($scope.dog); //THIS DOESN'T STORE IN THE INFORMATION
};
正如我前面所说的,我试图将一个对象推到一个对象数组的末尾,但它就是不起作用。这一切都发生在AngularJS模块的控制器中

$scope.dogs = [
{
  name: "Blinky",
  age: "2",
  owner: "Martha Franklin",
  vaccinated: "Y"
},
{
  name: "Spot",
  age: "4",
  owner: "Martha Franklin",
  vaccinated: "Y"
}];

  $scope.dog = {
  name: "john",
  age: "44",
  owner: "rocky",
  vaccinated: "n"
};

$scope.savePet = function(){
 console.log($scope.dog.name); 
 $scope.dogs.push($scope.dog); //THIS DOESN'T STORE IN THE INFORMATION
 console.log($scope.dogs); 
 };
$scope.dog值为空,因此它无法工作。。。 在$scope.dog中添加值。 您的代码很好。



原因是您试图将同一对象添加到数组中。数组不接受相同的对象。你需要创建一个新对象或复制(拷贝)使其工作。

我不明白为什么这对你不起作用。我创建了一个JS fiddler来模拟您的代码及其完美工作

代码:

HTML:


您好打开控制台查看结果
结果:见下文。

建议:如果它仍然不起作用,我建议你修改上面的代码,并进行相应的修改,然后发回,这样我们可以更好地查看它。

-很好,“它就是不起作用”是什么意思?我可以假设你期待的狗没有出现在视野中吗?这个代码看起来不错。
function DogController($scope) {
    $scope.dogs = [
    {
      name: "Blinky",
      age: "2",
      owner: "Martha Franklin",
      vaccinated: "Y"
    },
    {
      name: "Spot",
      age: "4",
      owner: "Martha Franklin",
      vaccinated: "Y"
    }];

$scope.dog = {
      name: "",
      age: "",
      owner: "",
      vaccinated: ""
    };

$scope.savePet = function(){      
      $scope.dogs.push($scope.dog); //THIS DOESN'T STORE IN THE INFORMATION
      console.log($scope.dogs[2]);
    };
}
<div ng-app ng-controller="DogController">
    <div>Hello open your console to see the result</div>
    <input type="submit" ng-click="savePet()" value="Click Me"></input>   
</div>