为什么从 Angular 服务内的对象中删除此元素不起作用?
Why removing this element from an object inside an Angular service doesn't work?
我正在使用 Angularjs 创建一个应用程序,我正在尝试使用一个对象作为数组容器;所以我有对象->数组->对象。我知道,我可以使用数组作为容器,但那样做似乎效果不佳。我有一个包含该对象的服务,以及两种添加和删除条目的方法。添加完美,但删除不完美,即使我检查了控制台并且输出是 true ($log.log(delete persons[person]);) ..
var app = angular.module('app', []);
app.controller('appController', function($log, $scope, MyService){
$scope.users = MyService.getPersons();
$scope.addEntry = function(){
MyService.addEmail($scope.newPerson, $scope.newEmail);
};
$scope.deleteEntry = function(){
MyService.deleteEmail($scope.personDelete);
};
});
angular.module('app').service('MyService', function($log){
var persons = {};
this.addEmail = function(person, email){
persons[person] = persons[person]? persons[person] : [];
persons[person].push({id: email});
};
this.deleteEmail = function(person){
//$log.log(delete persons[person]); <-- it's true!
delete persons[person];
};
this.getPersons = function(){
return persons;
};
});
这是 Plunkr
TD 元素上的 ngModel 没有意义,也没有做任何事情。只需将 person
对象传递给 deleteEntry 方法:
<tbody ng-repeat="(person, emails) in users">
<tr ng-repeat="email in emails">
<td>{{person}}</td>
<td>{{email.id}}</td>
<td>
<button ng-click="deleteEntry(person)">delete</button>
</td>
</tr>
</tbody>
在控制器中:
$scope.deleteEntry = function(person) {
MyService.deleteEmail(person);
};
我正在使用 Angularjs 创建一个应用程序,我正在尝试使用一个对象作为数组容器;所以我有对象->数组->对象。我知道,我可以使用数组作为容器,但那样做似乎效果不佳。我有一个包含该对象的服务,以及两种添加和删除条目的方法。添加完美,但删除不完美,即使我检查了控制台并且输出是 true ($log.log(delete persons[person]);) ..
var app = angular.module('app', []);
app.controller('appController', function($log, $scope, MyService){
$scope.users = MyService.getPersons();
$scope.addEntry = function(){
MyService.addEmail($scope.newPerson, $scope.newEmail);
};
$scope.deleteEntry = function(){
MyService.deleteEmail($scope.personDelete);
};
});
angular.module('app').service('MyService', function($log){
var persons = {};
this.addEmail = function(person, email){
persons[person] = persons[person]? persons[person] : [];
persons[person].push({id: email});
};
this.deleteEmail = function(person){
//$log.log(delete persons[person]); <-- it's true!
delete persons[person];
};
this.getPersons = function(){
return persons;
};
});
这是 Plunkr
TD 元素上的 ngModel 没有意义,也没有做任何事情。只需将 person
对象传递给 deleteEntry 方法:
<tbody ng-repeat="(person, emails) in users">
<tr ng-repeat="email in emails">
<td>{{person}}</td>
<td>{{email.id}}</td>
<td>
<button ng-click="deleteEntry(person)">delete</button>
</td>
</tr>
</tbody>
在控制器中:
$scope.deleteEntry = function(person) {
MyService.deleteEmail(person);
};