2016-01-13 102 views
0

如何在編輯項目時設置下拉菜單的選定值?angularjs - 編輯項目時在選擇下拉菜單中設置選定的值

<div class="form-group"> 
    <label for="category" class="col-sm-2 control-label">Category</label> 
    <div class="col-sm-10"> 
     <select ng-model="quiz.category" ng-options="category as category.name for category in categories" required> 
      <option></option> 
     </select> 
    </div> 
</div> 

當我點擊編輯

$scope.editQuiz = function(quiz) 
    { 
     $scope.quiz = {}; 
     $scope.quiz.name = quiz.name // this works fine 
     $scope.quiz.category = quiz.category[0]; // ????? 
     console.log($scope.quiz.category); 
     //$scope.quiz = quiz; 

    } 

方法來獲得類別:

$scope.getCategories = function() { 
    $http.get('http://localhost/myappi/API/index.php/Api/categories'). 
     success(function(data) { 

      $scope.categories = data; 
     }) 
     .error(function(err) { 
     console.log('error',err); 
    }) 
    }; 
+0

只是'quiz.category' – koox00

+0

quiz.category會給我的Array [1],quiz.category [0]會給我的對象。忘了提及。 – Cristian

+0

你有多個選擇? – koox00

回答

0

好吧,如果你真的想保持quiz.category作爲一個數組。
首先當你get測驗分配quiz.category到一個新的對象。 e.g:

$scope.tmp = { category: quiz.category[0] }; 

我們必須這樣做,因爲quiz.category是一個數組,但ng-options的值是一個對象。

現在我們可以說無功結合到這樣的選項:

<select ng-model="tmp.category" ng-options="category as category.name for category in categories" required> 
     <option></option> 
</select> 

終於在你的函數替換舊值與新:

$scope.quiz.category[0] = tmp.category; 

希望這是有道理的

+0

感謝您的幫助,將其更改爲模型並設法使其運行。 – Cristian

0

更改選擇的ngModel肯定是要走的路。你可以查看這solution,因爲我相信它處理同樣的問題。

$scope.options = [{ name: "a", id: 1 }, { name: "b", id: 2 }]; $scope.selectedOption = $scope.options[1];

<select data-ng-options="o.name for o in options" data-ng-model="selectedOption"></select>

你能向我們提供您的數據結構樣本?

0

使用 「軌道由」 內部NG選項

category as category.name for category in categories track by category.id 

工作example