Javascript 添加元素后无法将元素添加到数组中
我正在尝试AngularJS,而且对它非常陌生Javascript 添加元素后无法将元素添加到数组中,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我正在尝试AngularJS,而且对它非常陌生 <html ng-app="DemoApp"> <head> <script src="/Angular/jslibs/angular.js"></script> <script src="/Angular/app/app.js"></script> <script src="/Angular/app/services/personData.js"></scr
<html ng-app="DemoApp">
<head>
<script src="/Angular/jslibs/angular.js"></script>
<script src="/Angular/app/app.js"></script>
<script src="/Angular/app/services/personData.js"></script>
<meta charset="ISO-8859-1">
<title>Angular Example</title>
</head>
<body>
<div ng-controller="userCtrl">
<h2>Actor List:</h2>
<hr>
<ul ng-repeat="person in persons">
<li>{{person.name}} in {{person.city}}
<button ng-click="removeActor($index)">Delete</button>
</li>
</ul>
<hr>
<input type="text" placeholder="Name" ng-model="actor.name" /> <input
type="text" placeholder="City" ng-model="actor.city" />
<button ng-click="addActor()">Add</button>
</div>
</body>
</html>
personData.js:
demoApp.factory("personData", function() {
var actor = {
name : "",
city : ""
};
var persons = [ {
name : "User1",
city : "Location1"
}, {
name : "User2",
city : "Location2"
}, {
name : "User3",
city : "Location3"
} ];
return {
addActor : function() {
persons.push(actor);
actor = {
name : "",
city : ""
};
},
removeActor : function(index) {
persons.splice(index, 1);
},
getPersons : function() {
return persons;
},
getActor : function() {
return actor;
}
}
});
我的问题是,在添加一个元素之后,我无法向数组中添加元素。即使将actor设置为“”后,对文本的任何更改都会更改数组中的值 使用$scope.addActor=personData.addActor()因为addActor是函数 在控制器中,您没有调用函数 在控制器中,您必须创建函数$scope.addActor();因为您调用了ng,所以单击addActor() 控制器: 第一条语句将personData对象分配给
$scope.actor
当您调用addActor
时,您将该actor推送到数组中,并创建一个新对象,但$scope.actor
仍指向原始actor对象
改为:
$scope.addActor = function() {
personData.addActor();
$scope.actor = personData.getActor();
}
尝试在控制器中创建函数,并传递要添加的actor对象
$scope.addActor = function(){
personData.addActor($scope.actor);
};
为您效劳
addActor : function(actor) {
persons.push(actor);
},
不要每个人都使用相同的名称你可以更具体一点,只需在控制器中使用give函数并删除$scope.addActor=personData.addActor;这条线,让我知道它是否工作
$scope.addActor = function() {
personData.addActor();
$scope.actor = personData.getActor();
}
$scope.addActor = function(){
personData.addActor($scope.actor);
};
addActor : function(actor) {
persons.push(actor);
},