在所选的ng-model上设置默认值并管理ng-change

时间:2016-12-01 15:04:18

标签: angularjs angular-ngmodel angularjs-ng-change

我无法为所选项目设置默认值,因为我知道我应该从json()中获取默认值,使用该选定值来显示另一个表单。

在我的控制器中,我以这种方式设置了选择:

.controller('attributeFacetCtrl', function ($scope, tabsService, $location, contentService, attribute) {

    $scope.attribute = attribute;

    $scope.types = [{
        val: 'terms'
    }, {
        val: 'continuous'
    }];

    $scope.selected =  $scope.attribute.facet.data.type;

    $scope.isTerms = false;

    $scope.validateFrom = function() {

        var chk = $scope.selected.val;

        if (chk === 'terms') {
            $scope.isTerms = true;
        } else {
            $scope.isTerms = false;
        }
    };
})

$ scope.attribute.facet.data.type ="条款"

的结果

在我看来,我有这个

 <div class="form-group">
                        <label class="wk-field-label">
                            <i class="icon-asterisk wk-prefield wk-mandatory"></i>
                            Type
                        </span>
                        </label>
                        <select class="wk-field-input" ng-model="selected"
                                ng-options="typeValue as typeValue.val for typeValue in types"
                                ng-change="validateFrom()"
                                required></select>
                    </div>
                    <div ng-if="isTerms" ng-repeat="orders in attribute.facet.data.order">
                        <div>
                            <label class="wk-field-label">
                                <i class="icon-asterisk wk-prefield wk-mandatory"></i>
                                Order
                                </span>
                            </label>
                    </div>
 </div>

2 个答案:

答案 0 :(得分:1)

问题是您将$scope.selected设置为字符串(“条款”),但是当您加载ng-options时,它会使用val的对象加载它属性。

如果您不一定需要$scope.selected作为对象,那么您可以将ng-options更改为以下内容:

ng-options = "typeValue.val as typeValue.val for typeValue in types"

如果您需要$scope.selected成为具有val属性的对象,则需要适当设置其初始值,而不是将其设置为字符串以设置默认选择。

答案 1 :(得分:0)

由于您希望按字符串设置元素,请将select元素更改为以下内容:

<select 
  class="wk-field-input" 
  ng-model="selected"
  ng-options="typeValue as typeValue.val for typeValue in types"
  ng-change="validateFrom()"
  required
>
</select>

您可以在此处详细了解如何使用ashttps://docs.angularjs.org/api/ng/directive/ngOptions

希望有所帮助!