我正在使用 AngularJS 和 LocalStorage 构建一个应用程序。我遇到了一个问题,它对我来说有点太复杂了。
我有一个人员列表,其想法是能够添加名称数组。我选择 X 名称,单击添加,在数组中创建一个对象,它重置列表,我可以重新开始,选择 X 名称,单击添加等。
以下是我创建临时数组的方法,然后我将其推送到 LocalStorage:
HTML:
<form>
<div class="col-md-3" ng-repeat="staff in stafflist | orderBy: 'name'">
<button class="btn form-control" ng-show="!staff.chosen" ng-click="pushStaff(staff)">{{staff.name}}</button>
<button class="btn btn-primary form-control" ng-show="staff.chosen" ng-click="unpushStaff(staff)">{{staff.name}}</button>
</div>
<button class="btn ng-click="addRecord()">Add passangers</button>
</form>
JS:
$scope.paxlist = [];
$scope.pushStaff = function (staff) {
staff.chosen = true;
$scope.paxlist.push(staff);
console.log($scope.paxlist);
};
$scope.unpushStaff = function (staff) {
staff.chosen = false;
var index=$scope.paxlist.indexOf(staff)
$scope.paxlist.splice(index,1);
console.log($scope.paxlist);
}
我的问题是我可以在数组中创建对象,但是当我添加一个对象时,名称列表中的选定项不会重置,因此在添加下一个对象时会预先选择它们。同时,它也会与最后添加的对象保持链接,所以当我修改选择时,最后一个对象也会被修改。
这也影响了为数组的每个对象添加编辑功能的可能性。
我创建了一个Plnkr来说明这个问题。
如果你能对这个问题有所了解,那就太好了。