這是場景。我有兩個範圍數組,它們具有「排序」和「預先排序」的預定義值,並且它們不綁定在一起。我有按鈕,將值添加到「排序」數組和重置按鈕。單擊重置按鈕,以便「排序」數組的值將與「preSort」數組的值相同。然而,問題是,當我點擊重置。這兩個陣列現在被綁定。我想點擊復位按鈕在AngularJS上解除綁定數組
請參見下面的代碼後不綁定:
function isInArray(value, array) { \t
return array.indexOf(value) > -1;
\t \t }
\t \t function ascendingArrayList(value, array){
\t \t \t new_value = value.replace('-', '')
\t \t \t index = array.indexOf(value);
\t \t \t // alert(index);
\t \t \t // Conditional statement is to make sure that it does not delete anything if field did not make any sorting yet
\t \t \t // Comment the conditional to enable single sorting for each field
\t \t \t if(index != -1){
\t \t \t \t array.splice(index, 1);
\t \t \t }
\t \t \t array.push(new_value);
\t \t \t return array;
\t \t }
\t \t function descendingArrayList(value, array){
\t \t \t new_value = value.replace('-', '')
\t \t \t index = array.indexOf(new_value);
\t \t \t // Conditional statement is to make sure that it does not delete anything if field did not make any sorting yet
\t \t \t // Comment the conditional to enable single sorting for each field
\t \t \t if(index != -1){
\t \t \t \t array.splice(index, 1);
\t \t \t }
\t \t \t array.push(value);
\t \t \t return array;
\t \t }
\t var app = angular.module('myApp', []);
\t \t app.config(function($interpolateProvider, $httpProvider) {
\t \t \t // Change template tags
\t \t $interpolateProvider.startSymbol('[[');
\t \t $interpolateProvider.endSymbol(']]');
\t \t });
\t \t app.controller('myController', function($scope) {
\t \t \t $scope.sorts = ["rank_order"];
\t \t \t $scope.preSort = ["rank_order"];
\t \t \t $scope.tableHeaders = [
\t \t \t \t {'name': 'No.', 'field':'-rank_order'},
\t \t \t \t {'name': 'Code'},
\t \t \t \t {'name': 'Description'},
\t \t \t \t {'name': 'Department', 'field':'-rank_department'},
\t \t \t \t {'name': 'Type', 'field':'-rank_type'},
\t \t \t \t {'name': 'Updated By', 'field':'-updated_by__bio__user_code'},
\t \t \t \t {'name': 'Date Updated', 'field':'-date_updated'},
\t \t \t ];
\t \t \t $scope.reset = function(){
\t \t \t \t
\t \t \t \t $scope.sorts = $scope.preSort;
\t \t \t }
\t \t \t $scope.sort = function(field){
\t \t \t if(isInArray(field, $scope.sorts)){
\t \t \t \t $scope.sorts = ascendingArrayList(field, $scope.sorts)
\t \t \t }else{
\t \t \t \t // $scope.sorts.push(field);
\t \t \t \t $scope.sorts = descendingArrayList(field, $scope.sorts)
\t \t \t }
\t \t \t }
\t \t });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myController">
\t <table border="1px">
\t <tr>
\t \t <th ng-repeat="x in tableHeaders">
\t \t \t [[x.name]] <span ng-if="x.field" ng-click="sort(x.field, $event)"><u>Click to Sort</u></span>
\t \t </th>
\t \t </tr>
</table>
\t preSort:[[ preSort ]] ------------------------------- sorts: [[ sorts ]]
\t <br />
\t <button ng-click="reset()">Click to reset</button> \t
</div>
嘗試這個$ scope.reset =函數(){$ scope.sorts = [ 「rank_order」]; } –
angular.copy竅門 –