2015-10-20 30 views
6

我有2个select语句,第一个选择由我的第一个webservice请求填充。用户在第一个选择中选择所需的数据,其中将触发onChange方法来检索第一个选择对象,再次运行webservice以检索另一组数据并填充第二个select语句。无法填充第二个选择语句

HTML:

<div class="input-label"> 
    Select Kittens: 
</div> 
<select 
ng-model ="options" 
ng-options ="option.name for option in options" 
ng-change="onChange(options)"> 
<option>--</option> 
</select> 
<br> 
<div class="input-label"> 
    Select Age: 
</div> 
<select 
ng-options ="detail.age for detail in details"> 
<option>--</option> 
</select> 

控制器:

.controller("ctrl",['$scope',function($scope){ 
     $scope.options = [ 
      {id:1, name:'typeA'}, 
      {id:2, name:'typeB'}, 
      {id:3, name:'typeC'}, 
      {id:4, name:'typeD'} 
     ] 

      $scope.onChange = function(item){ 
      console.log("Hi world!"); 
      console.log(item); 
      $scope.details = [ 
      {id:1, age:'11'}, 
      {id:2, age:'10'}, 
      {id:3, age:'9'}, 
      {id:4, age:'6'} 
     ] 
    }; 
    }]) 

问题:

1)选择所述第一选择后,该值只是从选择框消失,但该值(对象)成功传递到onChange函数

2)无法填充第二个选择框

我创建了一个plunkr来复制我的问题(没有web服务)。谢谢!

链接: http://plnkr.co/edit/tqI0a83PiIHNUkKLj1WF?p=preview

回答

1

From Docs

选择指令与ngModel一起使用,以提供的范围和<select>控制(包括 设置默认值)之间 数据绑定。

另外,你需要改变第一个选择ng-modelng-repeat是怎么回事optionsng-model也是一样的,即options,应将其更改为someOpetion

标记

<select ng-model="someOpetion" ng-options="option.name for option in options" ng-change="onChange(options)"> 
    <option>--</option> 
    </select> 
    <br> 
    <div class="input-label"> 
    Select Age: 
    </div> 
    <select ng-options="detail.age for detail in details" ng-model="someDetails"> 
    <option>--</option> 
</select> 

Plunker

2

使用此代码:DEMO

<div class="input-label"> 
    Select Kittens: 
    </div> 
    <select ng-model="name" ng-options="option.name for option in options" ng-change="onChange(name)"> 
    <option>--</option> 
    </select> 

    <br> 

    <div class="input-label"> 
    Select Age: 
    </div> 
    <select ng-model ="age" ng-options="detail.age for detail in details"> 
    <option>--</option> 
    </select> 

你的第一个ng-model = "options"的名称,但内部控制器还使用$scope.options作为对象的数组。

此外,在第二个<select>没有ng-model。但是ng-options需要ng-model

+0

与我的相同:D –

1

我得到了你的问题。

这是你的plunker

Plunker

的固定版本,你需要在你的控制器使用这些作为ng-model添加两个scope变量。

您的第二选择的问题是它没有ng-model属性。选择必须具有ng-model属性。

相关问题