2013-07-26 293 views
1

控制器:填充選擇

$scope.obj = { 
    "category": { 
     "value": "1", 
     "synonym": "" 
    }, 
    "name": { 
     "value": "2", 
     "synonym": "" 
    } 
}; 

我有HTML這樣的:

<select 
    ng-model="model", 
    ng-options="value.value as key for (key , value) in obj", 
    bs-select> 
</select> 

我想要得到這樣的結果:

<option value="1"> category </option> 
<option value="2"> name </option> 

,但我得到這樣的:

<option value="category"> category </option> 
<option value="name"> name </option> 

你能幫我找到問題嗎?

回答

2

你在做什麼是正確的。下拉列表有點令人困惑,因爲您應該通過訪問模型而不是從DOM獲取該值。所以無論用HTML表示什麼都不重要。

下面是一個示例(FIDDLE),當您更改下拉列表時,實際值將被傳入。雖然在呈現的HTML中看起來有點不同,但這是Angularjs作爲自包含範圍的本質用於雙向數據綁定。

function ctrl($scope) { 
    $scope.obj = { 
     "category": { 
      "value": "1", 
      "synonym": "" 
     }, 
     "name": { 
      "value": "2", 
      "synonym": "" 
     } 
    }; 

    $scope.model = "1"; 

    $scope.$watch('model', function(newValue, oldValue){ 
     console.log(newValue); 
    }); 
} 
+0

哇感謝您的好回答:) – karaxuna