【问题标题】:Expression based on a condition基于条件的表达式
【发布时间】:2017-11-28 08:57:30
【问题描述】:

我刚开始练习Angular JS,我成功获得了第一个输出,但是当我尝试根据我的情况修改代码时,它给了我错误的输出。

我提供一个text box 供献血者输入他的姓名,并提供一个drop down 来选择他的血型。第一个代码会在捐献者提供数据时显示他的姓名和血型

示例代码:-

<!DOCTYPE html>
<html lang="eng-US">
	<head>
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
	</head>
	<body>
		<div ng-app="">
			<div>
				<span>Donor name : 	<input type="text" ng-model="donorName"></span>
			</div>
			<div>
				<span>
					Blood group : 	<select ng-model="donorGroup">
										<option value="A+">A+</option>
										<option value="A-">A-</option>
										<option value="AB+">AB+</option>
										<option value="AB-">AB-</option>
										<option value="B+">B+</option>
										<option value="B-">B-</option>
										<option value="O+">O+</option>
										<option value="O-">O-</option>
									</select>									
				</span>
			</div>			
			<span> {{donorName}} {{donorGroup}} </span>
		</div>
	</body>
</html>

但是当donorName 和donorGroup 都不为空时,我想将其显示为&lt;donorName&gt;'s blood group is &lt;donorGroup&gt;。我重写了很多次代码,我无法在这里显示所有代码,因为它都是错误的,但这是我尝试的最后一件事,它也不能正常工作

<!DOCTYPE html>
<html lang="eng-US">
	<head>
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
	</head>
	<body>
		<div ng-app="">
			<div>
				<span>Donor name : 	<input type="text" ng-model="donorName"></span>
			</div>
			<div>
				<span>
					Blood group : 	<select ng-model="donorGroup">
										<option value="A+">A+</option>
										<option value="A-">A-</option>
										<option value="AB+">AB+</option>
										<option value="AB-">AB-</option>
										<option value="B+">B+</option>
										<option value="B-">B-</option>
										<option value="O+">O+</option>
										<option value="O-">O-</option>
									</select>									
				</span>
			</div>			
			<span> {{donorName != null && donorName != '') ? '{{donorName}}'s' blood group is' + {{donorGroup}} : ''}} </span>
		</div>
	</body>
</html>

所以我的疑问是如何在 Angular JS 的布尔条件中插入表达式?

【问题讨论】:

    标签: angularjs expression ternary-operator


    【解决方案1】:

    简单地做:

    <span data-ng-show="donorName && donorGroup">{{donorName}} blood group is {{donorGroup}}</span>
    

    在上面的代码中,使用了内置指令ng-show

    另外,如果您仍然想在插值内进行,我认为这不是一种简洁的方法,您可以简单地这样做:

    <span>{{donorName && donorGroup? donorName + "'s blood group is " + donorGroup: '' }}</span>
    

    【讨论】:

    • 好的,让我了解 data-ng-show,谢谢。但是我们如何在布尔条件中插入表达式呢?
    • 我没有得到你的问题。请详细说明@ArunSudhakaran
    • @ArunSudhakaran:我已经添加了您所要求的内容,但这不是一种很好的做事方式。您或其他人需要更多时间来了解将来何时重新访问您的代码
    • 我是 Angular JS 的新手,我不知道什么是名称和类,因为它不存在于我的代码中
    • 对不起,我已经编辑了我的答案。那是我正在尝试的事情。将变量更改为您正在使用的变量@ArunSudhakaran
    【解决方案2】:

    你可以试试下面的代码。

            <!DOCTYPE html>
        <html>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
        <body>
    
        <div ng-app ="sortApp" ng-controller ="mainController">
                        <!DOCTYPE html>
    <html lang="eng-US">
        <head>
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
        </head>
        <body>
            <div ng-app="">
                <div>
                    <span>Donor name :  <input type="text" ng-model="donorName"></span>
                </div>
                <div>
                    <span>
                        Blood group :   <select ng-model="donorGroup">
                                            <option value="A+">A+</option>
                                            <option value="A-">A-</option>
                                            <option value="AB+">AB+</option>
                                            <option value="AB-">AB-</option>
                                            <option value="B+">B+</option>
                                            <option value="B-">B-</option>
                                            <option value="O+">O+</option>
                                            <option value="O-">O-</option>
                                        </select>                                   
                    </span>
                </div>          
                <div> {{ (donorName && donorGroup) ? donorName +'s blood group is' + donorGroup : ''}} </div>
            </div>
        </body>
    </html>
                    </div>
        <script>
        angular.module('sortApp', [])
    
        .controller('mainController', function($scope) {
    
        });
        </script> 
    
        </body>
        </html>
    

    【讨论】:

      【解决方案3】:

      <!DOCTYPE html>
      <html lang="en-US">
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
      <script
        src="https://code.jquery.com/jquery-3.2.1.min.js"
        integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
        crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
      <body>
      
      <div ng-app="myApp" ng-controller="myCtrl">
      
      
      		<div ng-app="">
      			<div>
      				<span>Donor name : 	<input type="text" ng-model="donorName"></span>
      			</div>
      			<div>
      				<span>
      					Blood group : 	<select ng-model="donorGroup">
      										<option value="A+">A+</option>
      										<option value="A-">A-</option>
      										<option value="AB+">AB+</option>
      										<option value="AB-">AB-</option>
      										<option value="B+">B+</option>
      										<option value="B-">B-</option>
      										<option value="O+">O+</option>
      										<option value="O-">O-</option>
      									</select>									
      				</span>
      			</div>			
      			
      			<span> {{donorName!= ''? donorName: ''}}'s blood group is {{donorGroup}} </span>
      		</div>
      </div>
      
      </div>
      
      </body>
      <script>
      var app = angular.module('myApp', []);
      app.controller('myCtrl', function($scope) {
      
      });
      </script>
      </html>

      工作代码sn-p

      【讨论】:

      • 这会一直显示插值后的句子和donorGroup
      猜你喜欢
      • 2020-10-16
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2021-06-15
      • 2014-12-10
      相关资源
      最近更新 更多