【问题标题】:Show Hide Divs based on dropdown selection根据下拉选择显示隐藏 div
【发布时间】:2017-11-19 22:39:23
【问题描述】:

我需要你的帮助。我已经部分解决了我的问题,但无法找出动态解决问题的方法。

要求:我有两个面板,它们只会根据下拉列表值的选择出现

面板名称为:Panel_1 和 Panel_2 下拉列表值:Panel1 和 Panel2

我运行良好的代码如下:

下拉列表代码(硬编码):

<select name="type" ng-model="dataparameters.type" ng-dropdown required ng-change="SelectDDL()">

                                                        <option ng-option value="Panel 1">Panel 1</option>
                                                        <option ng-option value="Panel 2">Panel 2</option>
                                                    </select>

面板代码:

<div class="panel panel-default" style="width:650px" id="P1" ng-if="dataparameters.type == 'Panel 1'">
                    <div class="panel-heading">
                          Panel_1
                    </div>
                    <div class="panel-body">
                        <div>
                            <label class="col-xs-6 control-label">Panel1 :</label>
                            <div class="col-xs-6">
                                <input type="number" class="form-control" ng-model="dataparameters.P1" />
                            </div>
                        </div>
                    </div>
                </div>

                <div class="panel panel-default" style="width:650px" id="P2" ng-if="dataparameters.type == 'Panel 2'">
                    <div class="panel-heading">
                            Panel_2
                    </div>
                    <div class="panel-body">
                        <div>
                            <label class="col-xs-6 control-label">Panel2 :</label>
                            <div class="col-xs-6">
                                <input type="number" class="form-control" ng-model="dataparameters.P2" />
                            </div>
                        </div>
                    </div>
                </div>

Angular.JS 文件代码:

var application = angular.module('AddEditComponentApp', []);

application.controller('addeditcomponentcontroller', ['$scope', '$http', '$filter', function ($scope, $http, $filter) {
    $scope.Selected_DataParameters_Add = {}
 $scope.SelectDDL = function () {

        }
}]);

在这里我们可以看到下拉列表是硬编码的。我已经从数据库中动态填写了我的下拉列表,但在该面板可见性之后无法正常工作。

填写下拉列表的代码如下:

 <select id="Selected_DataParameters_Add" ng-model="$scope.Selected_DataParameters_Add" ng-options="dp.Data_Parameter_Name for dp in DataParameters" ng-dropdown required ng-change="Checked()">

                                                        <option ng-option value="">Select Data Fields</option>


                                                    </select>

我认为唯一的问题是我无法理解如何将值动态填充到 ng-option value=""

【问题讨论】:

  • 你可以检查这个answer 它也尝试创建和使用 ng-option
  • 我已经查看了该答案,但这对我不起作用。当我使用硬代码值填充下拉列表时,请查看我的代码工作正常。但我的实际要求是用我已成功完成的数据库填充下拉列表。但在动态填充下拉列表后,面板可见性无法根据下拉列表值的选择工作。

标签: angularjs panel ng-show


【解决方案1】:

在代码上花费了更多时间后,我已经解决了我的问题。而不是使用 'ng-if' 这可以通过 div 标签下的 'ng-show' 来修复。

我已经替换了以下代码,现在它对我来说工作正常。

代码ng-if="dataparameters.type == 'Panel 1'"替换为ng-show="$scope.Selected_DataParameters_Add.Data_Parameter_Name=='Panel 1'"

所以完整的代码修改如下:

<div class="panel panel-default" style="width:650px" id="P1" ng-show="$scope.Selected_DataParameters_Add.Data_Parameter_Name=='Panel 1'">
                    <div class="panel-heading">
                          Panel_1
                    </div>
                    <div class="panel-body">
                        <div>
                            <label class="col-xs-6 control-label">Panel1 :</label>
                            <div class="col-xs-6">
                                <input type="number" class="form-control" ng-model="dataparameters.P1" />
                            </div>
                        </div>
                    </div>
                </div>

                <div class="panel panel-default" style="width:650px" id="P2" ng-show="$scope.Selected_DataParameters_Add.Data_Parameter_Name=='Panel 2'">
                    <div class="panel-heading">
                            Panel_2
                    </div>
                    <div class="panel-body">
                        <div>
                            <label class="col-xs-6 control-label">Panel2 :</label>
                            <div class="col-xs-6">
                                <input type="number" class="form-control" ng-model="dataparameters.P2" />
                            </div>
                        </div>
                    </div>
                </div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多