我如何将 ng-model 中的值用于 ng-show?

How can i use values from ng-model for ng-show?

我是 angular 的新手,在弄清楚如何以正确的方式使用 ng-model 中的值时遇到了一些困难。
我做了两个下拉列表,想在这两者之间建立依赖关系。应显示第二个列表,具体取决于第一个列表的用户输入。 在这种情况下,用户应 select 啤酒的发酵类型(此处 Obergärig 表示上层发酵),并且仅当用户选择 'Obergärig' 时才应显示第二个下拉列表。我用 ng-show 试过它,但它不起作用,我不知道为什么,甚至不知道我是否以正确的方式使用它。 如果有人能给我一个简短的解释我做错了什么,我将不胜感激。

Html 第一个下拉列表:

<div ng-controller="BierController">
<select ng-model="Bierart" ng-options="art as art.name for art in arten">
<option value="" disabled selected>Gärigkeit auswählen</option>
</select>
</div>

Html 第二个下拉列表:

<div ng-controller="OberController" ng-show="Bierart == 'Obergärig'">
<select ng-model="OberBier" ng-options="sorte as sorte.name for sorte in obere">
<option value="" disabled selected>Biersorte auswählen</option>
</select>
</div>

这是.js:

app.controller("BierController", function($scope){
$scope.arten=[
{name:'Obergärig'},
{name:'Untergärig'},
{name:'Keine Angabe'}
];});

app.controller("OberController", function($scope) {
$scope.obere=[
{name:'Ale'},
{name:'Altbier'},
{name:'Berliner Weiße'}
];});   

这是我第一次 post 在这里,所以我很感谢每一个建议,以提高这个 post 的质量。另外,请原谅我的英语不好。

您的 select 必须由一个控制器管理。因此,您的代码应如下所示:

<div ng-controller="BierController">
    <select ng-model="Bierart" ng-options="art as art.name for art in arten">
        <option value="" disabled selected>Gärigkeit auswählen</option>
    </select>
    <div ng-show="Bierart === 'Obergärig'">
        <select ng-model="OberBier" ng-options="sorte as sorte.name for sorte in obere">
            <option value="" disabled selected>Biersorte auswählen</option>
        </select>
    </div>
</div>

.js:

app.controller("BierController", function($scope){
$scope.arten=[
{name:'Obergärig'},
{name:'Untergärig'},
{name:'Keine Angabe'}
];

$scope.obere=[
{name:'Ale'},
{name:'Altbier'},
{name:'Berliner Weiße'}
];}); 

只需执行以下步骤:

  1. 两个 select 使用相同的控制器。

  2. 创建一些 $scope 变量来保存第一个 select 的条件。(例如 $scope.selectedBeer)

  3. 设置第二个select的条件ing-show属性.

示例:

JS文件:

app.controller("BierController", function($scope){
$scope.arten=[
{name:'Obergärig'},
{name:'Untergärig'},
{name:'Keine Angabe'}
];

$scope.obere=[
{name:'Ale'},
{name:'Altbier'},
{name:'Berliner Weiße'}
];

$scope.selectedBeer = "";
});

HTML 文件:

<div ng-controller="BierController">
<select ng-model="selectedBeer" ng-options="art as art.name for art in arten">
<option value="" disabled selected>Gärigkeit auswählen</option>
</select>
</div>

<div ng-controller="BierController" ng-show="selectedBeer == 'Obergärig'">
<select ng-model="OberBier" ng-options="sorte as sorte.name for sorte in obere">
<option value="" disabled selected>Biersorte auswählen</option>
</select>
</div>

我可能在编码时犯了一些语法错误 IDE,但主要思想已得到描述。祝你好运!

这是新的 html:

<div ng-controller="BierController">
<select ng-model="selectedBeer" ng-options="art as art.name for art in arten">
                            <option value="" disabled selected>Gärigkeit auswählen</option>
                        </select>
                        </br>
                        {{selectedBeer.name}} 


                <div  ng-show="selectedBeer == 'Obergärig'">
                    <select ng-options="sorte as sorte.name for sorte in obere">
                        <option value="" disabled selected>Biersorte auswählen</option>
                    </select>
                    </br>
                    {{selectedBeer.name}}
                </div>

和 .js

app.controller("BierController", function($scope){
$scope.arten=[
{name:'Obergärig'},
{name:'Untergärig'},
{name:'Keine Angabe'}
];

$scope.obere=[
{name:'Ale'},
{name:'Altbier'},
{name:'Berliner Weiße'}
];

$scope.selectedBeer = "";
}); 

感谢您的建议,我会安装 ng-inspect FF。