Angular:显示div内容,具体取决于从下拉菜单中选择的选项(ng-show / ng-switch)

时间:2014-10-15 18:27:59

标签: javascript html angularjs angular-ngmodel

所以我对前端(角度,靴子等)完全不熟悉,但我在这里创建了一个JSFiddle链接,而我想要做的就是基本上如果有人选择“VA”中的选项下拉菜单,我想使用适当的ng(开关或显示),并显示具有相同名称的div类,在这种情况下div class =“VA”

如果他们选择NY,我希望它显示div-class =“NY”,而不是VA div(在我的例子中我只有两个选项,但我会在我的实际程序中有不同的选项(可以是~10)

任何人都可以帮助我或让我朝着正确的方向前进吗?感谢。

JSFiddle链接:http://jsfiddle.net/BootstrapOrBust/kw3qgL3f/

<section ng-controller="Ctrl as loc">   
    <select class="form-control">

        <option>Choose Place</option>
        <option value="DC">DC</option>
        <option value="NY">NY</option>
    </select>
</section>

...
...
...

 <div class="DC">
     <table class="table">
         <thead>
             <tr>
                 <th>Location</th>
             </tr>
         </thead>
         <tbody>
             <tr>
                 <td><a href="#">Metro</a></td>
             </tr>
             <tr>
                 <td><a href="#">Capital</a></td>
             </tr>
         </tbody>
     </table>
</div>

 <div class="NY">
     <table class="table">
         <thead>
             <tr>
                 <th>Location</th>
             </tr>
         </thead>
         <tbody>
             <tr>
                 <td><a href="#">Subway</a></td>
             </tr>
             <tr>
                 <td><a href="#">Yankees</a></td>
             </tr>
         </tbody>
     </table>
</div>

2 个答案:

答案 0 :(得分:5)

http://jsfiddle.net/kw3qgL3f/3/

首先关闭 - 你已经在某个地方ng-app,所以角度可以启动。

<section ng-app="test" ng-controller="Ctrl as loc"> 

其次,控制器控制的所有内容都必须位于ng-controller的元素中,因此我们将</section>移到其他所有位置。

使用select时,如果您使用ng-options而不是自己列出选项,那么您将为自己省去很多麻烦,一个例外是&#34;选择一个&#34 ;选项 - 将其作为占位符:

<select ng-model="showLoc" class="form-control" ng-options="place.abbreviation as place.name for place in places">                                                                    
    <option value="">Choose One</option>
</select>

$scope.places = [
     { abbreviation:'NY', name: 'New York'}, 
     {abbreviation: 'DC', name:'District of Columbia'}
];

您可以这样做:

 <div ng-switch="showLoc">
     <div ng-switch-when="DC">
         ...
     </div>
     <div ng-switch-when="NY">
         ...
     </div>
 </div>

但是,我实际上可能会这样做: http://jsfiddle.net/kw3qgL3f/4/

<section ng-app="test" ng-controller="Ctrl as loc"> 
  <select ng-model="selectedPlace" class="form-control" ng-options="place as place.name for place in places">                                                                    
    <option value="">Choose One</option>
  </select>

  <table ng-if="selectedPlace" class="table">
     <thead>
         <tr>
             <th>Location</th>
         </tr>
     </thead>
     <tbody>
         <tr ng-repeat="property in selectedPlace.properties">
             <td><a href="#">{{property}}</a></td>
         </tr>
     </tbody>
   </table>
</section>

$scope.places = [
    { abbreviation:'NY', name: 'New York', properties: ['Subway', 'Yankees']},
    {abbreviation: 'DC', name:'District of Columbia', properties: ['Metro', 'Captial']}
];

答案 1 :(得分:2)

这是我创建演示的plunker demo

您可以将ng-showselect

的选定值一起使用