基于条件的表达式

Expression based on a condition

我刚开始练习 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>

但是当 donorNamedonorGroup 都不为空时,我想将其显示为 <donorName>'s blood group is <donorGroup>。我重写了很多次代码,我不能在这里展示所有的代码,因为它都是错误的,但这是我最后尝试的,也不能正常工作

<!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 中的布尔条件中插入表达式?

只需执行:

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

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

此外,如果您仍想在插值内部进行操作,我认为这不是一种巧妙的方法,您可以简单地执行以下操作:

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

<!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>

工作代码片段

你可以试试下面的代码。

        <!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>