在angularjs中选择不带ng-option的选项

时间:2015-09-03 14:00:45

标签: javascript angularjs

<select>
    <option>active</option>
    <option>Deactive</option>
</select>

$scope.isActive = $scope.data.gameStatus;

我的选项不是动态的,所以我认为不应该使用ng-option,如何使用选中active选项,假设$ scope.isActive的值为true

3 个答案:

答案 0 :(得分:0)

请参阅ngSelected here的文档。

只需在ng-selected="isActive"上添加<option>

答案 1 :(得分:0)

selectngModel

绑定

试试这个

<select ng-model="mycontrol.value">
     <option>active</option>
     <option>Deactive</option>
</select>

<强> JS

$scope.mycontrol={
    value:''
};
$scope.mycontrol.value="active";

编辑

来自api的数据是真实的,而不是“活跃的”,

试试这个

var flag = true;
$scope.mycontrol.value= flag  ? "active" : "Deactive"; 

答案 2 :(得分:0)

这实际上是一个棘手的问题。首先,您需要设置ngModel指令。但即使你这样做也无论如何都无法工作,因为你的模型是布尔类型,而选项值当然是一个字符串。 Angular不会正确绑定此类模型。 (当然,只有当你不想使用ngOptions并希望使用简单的静态选项时,这在这种情况下才有意义。)

幸运的是,官方文档包含some hints。解决方案是添加一个辅助指令,将boolean转换为字符串以进行选项选择,将字符串转换为boolean,以便从所选选项中编写模型值。

angular.module('demo', []).controller('MainController', function($scope) {
    $scope.isActive = true;
})
.directive('convertToBoolean', function() {
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {
            ngModel.$parsers.push(function(val) {
                return val == 'true';
            });
            ngModel.$formatters.push(function(val) {
                return val + '';
            });
        }
    };
});
<script src="https://code.angularjs.org/1.4.3/angular.js"></script>

<div ng-app="demo" ng-controller="MainController">
    <select ng-model="isActive" convert-to-boolean>
        <option value="true">Active</option>
        <option value="false">Deactive</option>
    </select> {{isActive}}
</div>

所以,在这种情况下,使用ngOptions会更简单:)