2016-12-01 70 views
2

我无法为我选定的项目设置默认值,因为我知道我应该从json()中获取默认值,使用该选定值显示另一个表单。在选定的ng模型上设置默认值并管理ng-change

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

.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> 
+0

'console.log($ scope.attribute.facet.data.type);'?的输出是什么? –

+0

console.log outpus:词条 – kyserslick

回答

1

的问题是,你设置$scope.selected为一个字符串(“条款”),但是当你加载了ng-options它使用具有val属性的对象加载它。

如果你并不一定需要$scope.selected是一个对象,那么你就可以改变你的ng-options以下几点:

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

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

+0

你是正确的typeValue.val在我的ng-options作品 – kyserslick

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

希望帮助!

+0

我更新了我的问题_typeValue as_不会改变它,默认选择的值仍然是空的我的看法 – kyserslick

+0

硬代码'$ scope.selected'作为'{val:'terms'}',然后尝试将其编码为'terms' - 这两个中的一个必须工作,但我确信这是我提出的原始方式。硬编码它至少会消除其中一个:) –

相关问题