2015-09-07 34 views
3

這是一個AngularJS問題;我有一個簡單的表格:AngularJS json多維數組看起來不像它應該是

<input type="text" class="form-control" id="qus" placeholder="Enter Question" ng-model="qus"> 
<input type="text" class="form-control" id="op1" placeholder="Option 1" ng-model="op1"> 
<label><input type="checkbox" ng-model="correct1">Correct</label> 
<button class="form-control btn btn-primary" ng-click = "save()">Save</button> 
<pre ng-bind="dataShow"></pre> 

腳本:

var app = angular.module('qApp', []); 
app.controller('qCtrl', function($scope) { 
    var set = []; 
    var op1 = []; 
    $scope.save = function(){ 
     if($scope.correct1!==true){$scope.correct1=false;}  
     op1.push($scope.op1, $scope.correct1); 
     var qus = [$scope.qus, op1]; 
     set.push(qus); 
     $scope.dataShow = JSON.stringify(set); 
    }; 

}); 

輸出:採用JSON.stringify的第一個條目

後的輸出如下所示:

[ 
["q1",["o1",false]] 
] 

和輸出爲第二項是:

[ 
["q1", ["o1",false,"o2",true]], 
["q2", ["o1",false,"o2",true]] 
] 

但我想是這樣的:

[ 
["q1", ["o1",false,]], 
["q2", ["o2",true]] 
] 

如何做到這一點? true/false是複選框的值。

+0

你能提供plunkr還是jsfiddle? – Grundy

+1

初始化op1裏面的保存方法 –

回答

2

@Nagesh Sanika是正確的。每個問題都會有一個選項列表。所以,當一個新問題被添加到集合中時,您可以每次創建選項數組。

var app = angular.module('qApp', []); 
app.controller('qCtrl', function($scope) { 
    var set = []; 

    $scope.save = function(){ 
     var op1 = []; // Moved it inside the save method 
     if($scope.correct1!==true){$scope.correct1=false;}  
     op1.push($scope.op1, $scope.correct1); 
     var qus = [$scope.qus, op1]; 
     set.push(qus); 
     $scope.dataShow = JSON.stringify(set); 
    }; 

}); 

這是plunker

+0

你可以直接'var op1 = [$ scope.op1,$ scope.correct1];':-) – Grundy

+0

@Grundy,對於給定場景這是正確的。但是如果要輸入多個選項,我們需要使用'push'方法來添加。 – DRB

1

爲了得到你的結果,你需要每次清空op1數組。

var app = angular.module('qApp', []); 
app.controller('qCtrl', function($scope) { 
var set = []; 
var op1 = []; 
$scope.save = function(){ 
    if($scope.correct1!==true){ 
     $scope.correct1=false; 
    }  

    op1.push($scope.op1, $scope.correct1); 

    var qus = [$scope.qus, op1]; 

    set.push(qus); 
    op1=[]; 
    $scope.dataShow = JSON.stringify(set); 
}; 
}); 

希望這個作品:)

相關問題