使用Angular.JS设置<select>的默认值

时间:2015-05-28 08:39:54

标签: javascript html angularjs angularjs-ng-options

假设您有一个很长的HTML表单,并且您有一个选择如下: &lt; select id =“select_id”ng-model =“var2model”ng-options =“i for in in ['a','b','c','d','e','f',' G”, 'H']“&GT;&LT; /选择&GT; 并且在控制器中你有一个变量$ scope.res,其中存储一些数据来填充表单。如何设置此选择默认值?我检查了ng-init,但实际上无法使用它。我试着设置ng-init =“i === res.my_var”,但没有运气。有人可以建议一种方法来解决这个问题吗? 这是我的控制器的一个片段: var ctrlRes = controllers.controller('ctrlRes',function($ scope,$ location,$ window,Patient){     $ window.document.title ='结果';     var path = $ location.path()。split('/');     var query = path [path.length - 1];     Patient.get({id:query},function(data){         $ scope.res = data;     });     $ scope.editMode = false;     $ scope.editData = function(){         console.log('editMode on');         $ scope.editMode = true;         $ scope.my_var = $ scope.res.my_var;     }; }); ctrlRes。$ inject = ['$ scope','Patient'];

4 个答案:

答案 0 :(得分:3)

您需要在控制器中为var2model设置值: 例如:$ scope.var2model =&#39; a&#39;

答案 1 :(得分:2)

  1. 对于选择输入,您使用var2model作为输入的模型。因此,为了提供默认值,您必须为此模型对象赋值。

  2. 对于select,为了分配默认值,您必须从用于在选择选项中放置值的数组中指定值。

  3. 所以你可以做到以下几点:

        var ctrlRes = controllers.controller('ctrlRes', function ($scope, $location, $window, Patient) {
            $window.document.title = 'Results';
    
            var path = $location.path().split('/');
            var query = path[path.length - 1];
            Patient.get({id: query}, function(data){
                $scope.res = data;
            });
    
            $scope.selectArray = ['a','b','c','d','e','f','g','h'];
            var index = $scope.selectArray.indexOf($scope.res.my_var);
            $scope.var2model = $scope.selectArray[index];
    
    
            $scope.editMode = false;
            $scope.editData = function () {
                console.log('editMode on');
                $scope.editMode = true;
                $scope.my_var = $scope.res.my_var;
            };
        });
        ctrlRes.$inject = ['$scope', 'Patient'];
    
    
        <select id="select_id" ng-model="var2model" ng-options="i for i in selectArray"></select>
    

答案 2 :(得分:1)

在从Patient服务检索数据后的控制器中,您应该使用默认值初始化var2model

答案 3 :(得分:0)

只需设置$ scope.var2model =&#39; a&#39;并删除ng-init。 Ng-init有另一个目标,来自他们的文档:

  

ngInit的唯一合适用途是对特殊属性进行别名处理   ngRepeat的内容,如下面的演示所示。除了这种情况,你应该   使用控制器而不是ngInit来初始化作用域上的值。