GVKun编程网logo

angularjs – 如何使用ng-if来测试是否定义了一个变量(angularjs if判断)

26

如果您想了解angularjs–如何使用ng-if来测试是否定义了一个变量和angularjsif判断的知识,那么本篇文章将是您的不二之选。我们将深入剖析angularjs–如何使用ng-if来测试是

如果您想了解angularjs – 如何使用ng-if来测试是否定义了一个变量angularjs if判断的知识,那么本篇文章将是您的不二之选。我们将深入剖析angularjs – 如何使用ng-if来测试是否定义了一个变量的各个方面,并为您解答angularjs if判断的疑在这篇文章中,我们将为您介绍angularjs – 如何使用ng-if来测试是否定义了一个变量的相关知识,同时也会详细的解释angularjs if判断的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

angularjs – 如何使用ng-if来测试是否定义了一个变量(angularjs if判断)

angularjs – 如何使用ng-if来测试是否定义了一个变量(angularjs if判断)

有没有办法使用ng-if来测试一个变量是否被定义,而不只是它的真实性?

在下面的示例(live demo)中,HTML仅显示红色项目的运费,因为item.shipping是定义的且非零。我也想显示蓝色物品的成本(运输已定义但为零),但不显示绿色物品(运输未定义)。

JavaScript:

app.controller('MainCtrl',function($scope) {
  $scope.items = [
      {
        color: 'red',shipping: 2,},{
        color: 'blue',shipping: 0,{
        color: 'green',}
    ];
});

HTML:

<body ng-controller="MainCtrl">
  <ul ng-repeat='item in items'>
    <li ng-if='item.color'>The color is {{item.color}}</li>
    <li ng-if='item.shipping'>The shipping cost is {{item.shipping}}</li>
  </ul>
</body>

我试着做ng-if =’angular.isDefined(item.shipping)’,但它没有工作。也没有ng-if =’typeof(item.shipping)!== undefined’。

尝试这个:
item.shipping!==undefined

Angularjs pagination 标签 如何使用(angularjs-ui)

Angularjs pagination 标签 如何使用(angularjs-ui)

如题,我想使用 angularjs 自带的分页标签,应该怎么引入。

angularjs – Angular,两个变量的双向绑定

angularjs – Angular,两个变量的双向绑定

我有两个与函数相关的变量,用户应该能够在输入字段中更改其中一个或另一个应该自动更改另一个的输入字段.

我怎么能这样做,现在我只是使用$watch.

这是一些示例代码和一个fiddle.

JS,

angular.module("test",[])
.controller("MyController",function ($scope) {
    $scope.letter = 'A';
    $scope.number = 1;
    $scope.map = { 'A': 1,'B': 2,'C': 3,'D': 4 };

    $scope.$watch('letter',function(new_val,old_val){
        if(new_val != old_val){
            $scope.number = $scope.map[new_val];
        }
    });
    $scope.$watch('number',old_val){
        ...
    });
});

HTML,

<div ng-app="test">
    <div ng-controller="MyController">
        <input ng-model="letter" />
        <input type="number" ng-model="number" />
    </div>
</div>

解决方法

有很多方法可以做到这一点,使用$watch肯定是其中之一.正如Matt所提到的,您还可以使用ng-change指令在控制器上触发方法.

我想提供的第三种方法是使用ES5 properties和Angular在1.2中引入的Controller ‘as’ syntax

如果将控制器定义为JS对象而不是使用匿名函数,则可以向原型添加属性和方法:

myController = function () {
    this.map = {'A': 1,'D': 4};
    this._letter = 'A';
    this._number = 1;
};

现在我们可以提取您已经完成的工作,将您的字母和数字值转换为函数:

myController.prototype.getLetterValue = function (num) {
    for (var key in this.map) {
        if (this.map.hasOwnProperty(key)) {
            if (this.map[key] === num) {
                return key;
            }
        }
    }
};

myController.prototype.getNumberValue = function (letter) {
    return this.map[letter];
};

最后,我们将在您的控制器上声明一些使用Object.defineProperty封装所需功能的属性.

Object.defineProperty(
myController.prototype,"letter",{
    get: function () {
        return this._letter;
    },set: function (newValue) {
        this._letter = newValue;
        this._number = this.getNumberValue(this._letter);
    },enumerable: true,configurable: true
});

Object.defineProperty(
myController.prototype,"number",{
    get: function () {
        return this._number;
    },set: function (newValue) {
        this._number = newValue;
        this._letter = this.getLetterValue(this._number);
    },configurable: true
});

将此控制器添加到您的模块:

angular.module("test",[])
    .controller("MyController",myController);

最后,您只需稍微修改绑定语法,以便将新的Controller’用作’语法.这将允许您直接绑定到控制器上的属性和方法,而不必使用$scope

<div ng-app="test">
    <div ng-controller="MyController as ctrl">
        <input ng-model="ctrl.letter" />
        <input type="number" ng-model="ctrl.number" />
    </div>
</div>

Live Demo

摘要

这不是完全没有代码,但确实有几个优点.

>您的控制器与$scope和$watch脱钩,使其更具便携性>控制器代码更易于阅读,因为所有功能都没有嵌套在匿名函数中>代码更具前瞻性,因为Angular的未来版本可能会通过使用本机observable来完全消除$scope和$digest循环.

angularjs – Angular.js ng-switch —测试值是空还是未定义

angularjs – Angular.js ng-switch —测试值是空还是未定义

在Angular.js模板中,我需要测试一个值是否未定义或为空….我不知道如何在ng-switch之后执行此操作,当对字符串中的表达式进行测试时。我需要使用ng-switch,因为它是一个if else条件。有任何想法吗?
<div ng-switch="vipLabel">
  <div ng-switch-when="vipLabel.toString()">
    <h1>Getting infomration...one sec</h1>
  </div>
    <div ng-switch-default>
      <h3>Do you wish to unbind {{node.label}} from {{ vipLabel }}?</h3>
    </div>
</div>
ng-switch允许表达式,您可以使用占位符,因此:
<div ng-switch="selection || '_undefined_'" >      
      <span ng-switch-when="_undefined_">I am set to zero or undefined?!</span>      
      <span ng-switch-default>This string is not empty</span>
</div>

欲了解更多信息:ng-switch on empty string

你通常在控制器内(见链接的回答#1)。

angularjs – Angular.js:在ng-repeat中使用ng-model进行下拉

angularjs – Angular.js:在ng-repeat中使用ng-model进行下拉

我很难理解如何在ng-repeat中使用ng-model.
在此上下文中,CargoItems是包含LoadPoint的对象列表. LoadPoint具有Id和Text属性.

我想显示文本,绑定到下拉列表中的当前选择,但我还想跟踪当然选择哪个Id.因此,我不确定如何使用select绑定更新这两个属性,或者通过显式使用标记,或者使用我还没有想到的ng-options.

所以有两个问题:

1)如何将选择列表中的文本和值正确绑定到CargoItem.LoadPoint上的Id和Text属性?我有一种感觉我的模型可能是错的?

2)如何使用ng-options默认为所选值?我想出了我自己的选项标签,但我想尽可能使用ng-options.

<div ng-repeat="cargoItem in cargo.CargoItems">
    <span>Selected Load Point: {{cargo.LoadPoint.Text}}</span> 
    <select ng-model="cargoItem.LoadPoint" ng-options="loadPoint.Id as loadPoint.Text for loadPoint in LoadPoints"></select>
</div>

提前致谢!

>绑定到整个对象引用,而不是使用“Id”属性(loadPoint.Id).要做到这一点,只需更改ng-options并删除loadPoint.Id作为部分:
<select ng-model="cargoItem.LoadPoint" ng-options="loadPoint.Text for loadPoint in LoadPoints"></select>

>如果您使用上述方法并正确引用LoadPoints对象,Angular将自动为您执行此操作.以下是有关如何使用直接LoadPoints对象引用的示例:

$scope.LoadPoints = [{ Id: '1',Text: 'loadPointA' },{ Id: '2',Text: 'loadPointB' }];        
$scope.cargo = {
    CargoItems: [{
        LoadPoint: $scope.LoadPoints[0]
    },{
        LoadPoint: $scope.LoadPoints[1]
    }]
};

使用这种方法,cargoItem.LoadPoint(ngModel)将始终保持对整个LoadPoints对象的引用(即{Id:’1′,Text:’loadPointA’}),而不仅仅是其Id(即’1′).

jsfiddle:http://jsfiddle.net/bmleite/baRb5/

今天关于angularjs – 如何使用ng-if来测试是否定义了一个变量angularjs if判断的介绍到此结束,谢谢您的阅读,有关Angularjs pagination 标签 如何使用(angularjs-ui)、angularjs – Angular,两个变量的双向绑定、angularjs – Angular.js ng-switch —测试值是空还是未定义、angularjs – Angular.js:在ng-repeat中使用ng-model进行下拉等更多相关知识的信息可以在本站进行查询。

本文标签: