我正在尝试将新项添加到roleList json数组.
我尝试过push / concat,但它没有改变roleList数组.
有什么办法解决这个问题吗?
我尝试过push / concat,但它没有改变roleList数组.
有什么办法解决这个问题吗?
- // The javascript :
- function RoleListCtrl($scope)
- {
- $('#myTab a[href="#role"]').tab('show');
- $scope.newCompanyName ="";
- $scope.newPosition="";
- $scope.addRole = function()
- {
- var newRole = new function() {
- this.companyName = $scope.newCompanyName;
- this.position = $scope.newPosition;
- this.id = '';
- }
- alert("test :"+newRole.companyName);
- $scope.roleList = $scope.roleList.push(newRole);
- // I have also tried this : $scope.roleList = $scope.roleList.concat(newRole);
- }
- $scope.roleList = [
- {"companyName": "Company 01","id":"1","position": "CEO"},{"companyName": "Company 02","id":"2","position": "Board of Director"},{"companyName": "Company 01","position": "Board of Director"}
- ];
- }
下面是调用addRole()的按钮:
- <form class="form-horizontal">
- <div id="myModal" class="modal hide fade" ng-controller="RoleListCtrl">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h3>Add Role</h3>
- </div>
- <div class="modal-body">
- <div class="control-group">
- <label class="control-label pull-left" for="name">Company Name</label>
- <div class="controls">
- <input type="text" id="coyName" ng-model="newCompanyName" placeholder="Company Name">
- </div>
- </div>
- <div class="control-group">
- <label class="control-label pull-left" for="name">Role</label>
- <div class="controls">
- <input type="text" id="newRole" ng-model="newPosition" placeholder="Role">
- </div>
- </div>
- </div>
- <div class="modal-footer">
- <a href="#" class="btn">Close</a>
- <a href="#" class="btn btn-primary" ng-click="addRole()">Save changes</a>
- </div>
- </div>
- </form>
- <div class="tab-pane" id="role" ng-controller="RoleListCtrl">
- <a class="btn btn-primary" data-toggle="modal" data-target="#myModal"><i class="icon-plus icon-white"></i>Add New Role</a>
- <BR>
- <table class="table table-bordered table-white spacer5">
- <tr>
- <th>company name</th>
- <th>position</th>
- <th>action</th>
- </tr>
- <tr ng-repeat="eachRole in roleList">
- <td>{{eachRole.companyName}}</td>
- <td>{{eachRole.position}}</td>
- <td>
- <button ng-click="deleteRole($index)">delete</button>
- </td>
- </tr>
- </table>
- <BR>
- </div>
解决方法
这行是你的问题:
- $scope.roleList = $scope.roleList.push(newRole);
当你调用push时,它返回长度(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push).您实际上是将新角色推入其中,然后将roleList替换为数组的长度,从而丢失数组.