使用对象数据源填充选择

时间:2013-07-26 21:06:20

标签: javascript html angularjs

控制器:

$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>

你能帮我找个问题吗?

1 个答案:

答案 0 :(得分: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);
    });
}