使用角度 ng-switch 获取输入范围的值

Posted

技术标签:

【中文标题】使用角度 ng-switch 获取输入范围的值【英文标题】:Get the value of an input scope with angular ng-switch 【发布时间】:2019-02-24 19:12:24 【问题描述】:

应该怎么做

每个按钮都链接到一个 div 块(例如:button01 链接到 block01)。每个 div 块有 3 个输入。最后一个输入获取其上方两个输入之间的数学函数的值。 div 块必须“出现”而不是显示/隐藏。

它的作用

三个按钮打开三个 div 块的部分起作用。问题是,当我尝试在两个输入中输入内容时,最后一个输入什么也得不到。

我的尝试

1) ng-switch 和 ng-switch-when

2) 将 div 放入每个 (script type="text/ng-template" id="aaa") 然后;

var forms = ["aaa", "bbb", "ccc", "ddd"];

credit_block.displayedForms = [];

credit_block.addForm = function(formIndex) 
    credit_block.displayedForms = [];
    credit_block.displayedForms.push(forms[formIndex]);     

3) (这个有效,但不是我想要的)ng-show

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>


<div class="row">
			<div class="col-sm-12">
					Pick a topic:
					<label><span>Button01</span><input style="display:none" type="radio" ng-model="myVar" value="block01"></label>
					<label><span>Button02</span><input style="display:none" type="radio" ng-model="myVar" value="block02"></label>
					<label><span>Button03</span><input style="display:none" type="radio" ng-model="myVar" value="block03"></label>
			</div>
		</div>
		
		<div class="row" ng-switch="myVar">
			<div class="col-sm-12" ng-switch-when="block01">
				<h3>Cumpar locuinta</h3>
				<div class="row">
					<div class="col-sm-10 col-xs-8 number-box">
						<label>Sum:</label>
						<input class="button-option" type="number" ng-model="sum">
					</div>
				</div>
				<div class="row">
					<div class="col-sm-10 col-xs-8 number-box">
						<label>Advancement:</label>
						<input class="button-option" type="number" ng-model="adv">
					</div>
				</div>
				<div class="row">
					<div class="col-sm-10 col-xs-8 number-box">
						<label>Value:</label>
						<input class="button-option" type="number" value=" result() ">
					</div>
				</div>
			</div>
  
		</div>
	</div>

<script>
	var myApp = angular.module('myApp', []);
	myApp.controller('myController', function($scope) 
		$scope.sum = 5;
		$scope.adv = 4;
        $scope.result = function()             
                return $scope.sum - $scope.adv;
        ;
    );
</script>

【问题讨论】:

【参考方案1】:

您遇到了一个经典的与范围相关的变量阴影问题。

ng-switch 创建一个新范围,因此您的 ng-model 绑定到 sumadv 与您在 myController 中设置的不对应。

解决这个新创建的作用域的常用方法是将用于绑定的ng-model 属性放在对象后面并通过它引用它们。

例如,在您的 html 中:

<input class="button-option" type="number" ng-model="data.sum">

然后在你的控制器中:

$scope.data =  sum: ... ;

Here's a demonstration of your snippet with some amendments to make it work.

【讨论】:

谢谢先生。我是 Angular 新手。

以上是关于使用角度 ng-switch 获取输入范围的值的主要内容,如果未能解决你的问题,请参考以下文章

ng-repeat 嵌套 ng-switch 出错解决

javascript Angular ng-show,ng-hide,ng-if,ng-switch

如何让我的 Ionic Button 刷新所有离子视图。 (最好只重新评估一个 ng-switch)

获取表单角度的字段

角度传递范围到 ng-include

Select2标记输入失去价值AngularJS