由于我是JS和AngularJS的初学者,所以我的问题可能很愚蠢,但我发现了一些问题。我有一个列表和一个函数:
$scope.persons = [{
"id": 1,
"name": "Mark",
"alive": true
}, {
"id": 2,
"name": "Tom",
"alive": true
}, {
"id": 3,
"name": "Jack",
"alive": false
}, {
"id": 4,
"name": "William",
"alive": true
}, {
"id": 5,
"name": "Scott",
"alive": true
}, ];
$scope.kill = function(person) {
person = {
"id": person.id,
"name": person.name,
"alive": !person.alive
};
console.log(person);
}
此列表用于创建表格。
<table>
<tbody>
<tr ng-repeat="person in persons">
<td>Name : {{person.name}}</td>
<td>Alive? : {{person.alive}}</td>
<td>
<button ng-click="kill(person)">{{person.alive? 'Kill' : 'Reborn'}}</button>
</td>
</tr>
</tbody>
</table>
当我单击按钮时,应该切换person.alive的值。使用此代码将无法正常工作。但是,如果函数kill()是:
$scope.kill = function (person) {
person.alive = !person.alive;
console.log(person);
}
有效!我在第一个函数中犯了错误还是只是正常现象?
此致
答案 0 :(得分:0)
您编写的第一个函数的问题在于您创建了一个新人员,而不是修改传递给您的人员。您编写的第二个函数是正确的,因为它可以修改现有人员的正确属性。