GVKun编程网logo

AngularJS模板中的条件逻辑(angularjs $q)

18

如果您想了解AngularJS模板中的条件逻辑和angularjs$q的知识,那么本篇文章将是您的不二之选。我们将深入剖析AngularJS模板中的条件逻辑的各个方面,并为您解答angularjs$q

如果您想了解AngularJS模板中的条件逻辑angularjs $q的知识,那么本篇文章将是您的不二之选。我们将深入剖析AngularJS模板中的条件逻辑的各个方面,并为您解答angularjs $q的疑在这篇文章中,我们将为您介绍AngularJS模板中的条件逻辑的相关知识,同时也会详细的解释angularjs $q的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

AngularJS模板中的条件逻辑(angularjs $q)

AngularJS模板中的条件逻辑(angularjs $q)

我有一个看起来像这样的有角模板…

<div ng-repeat="message in data.messages" ng->    <div>        <div></div>        <div>From Avatar</div>        <div>Created By Avatar</div>        <div>            <div></div>            <div>To Avatar</div>        </div>        <div>            <div>25</div>            <div>Dec</div>        </div>    </div>    <div>        <div>            <div>{{message.title}}</div>            <div ng-bind-html="message.content"></div>        </div>    </div>    <br />    <hr />    <br /></div>

我已经设置了一个JSfiddle来显示绑定的数据。

我需要做的是根据数据内容有条件地显示“ from”,“ to”和“ arrowTo” div。

日志是这个…

  • 如果数据中存在“ from”对象,则显示“ from” div并绑定数据,但不显示“ createdBy” div。
  • 如果没有“来自”对象,但是有“ createdBy”对象,则显示“ createdBy” div并绑定数据。
  • 如果数据中有一个“ to”对象,则显示“ arrowTo” div并将其绑定。

或用简单的英语显示,如果有一个发自地址,则显示它,否则,显示由谁创建记录,如果有一个至地址,则也显示该地址。

我已经研究过使用ng-switch,但是我想我必须添加额外的标记,如果没有数据,它将留下一个空的div。另外,我需要嵌套switch指令,但不确定是否可行。

有任何想法吗?

更新:

如果我要编写自己的指令(如果我知道怎么做!),那么这里有一些伪代码来说明我将如何使用它……

<div ng-if="showFrom()">    From Template Goes Here</div><div ng-if="showCreatedBy()">    CreatedBy Template Goes Here</div><div ng-if="showTo()">    To Template Goes Here</div>

如果函数/表达式评估为false,则每一个都将消失。

答案1

小编典典

Angular 1.1.5引入了ng-if指令。这是针对此特定问题的最佳解决方案。如果您使用的是Angular的旧版本,请考虑使用angular-
ui的ui-if指令。

如果您是在这里寻找“模板中的条件逻辑”这一一般问题的答案,请考虑:

  • 1.1.5还引入了三元运算符
  • ng-switch可用于有条件地从DOM中添加/删除元素
  • 另请参阅如何在AngularJS中有条件地应用CSS样式?

原始答案:

这是一个不太好的“ ng-if”指令:

myApp.directive(''ngIf'', function() {    return {        link: function(scope, element, attrs) {            if(scope.$eval(attrs.ngIf)) {                // remove ''<div ng-if...></div>''                element.replaceWith(element.children())            } else {                element.replaceWith('' '')            }        }    }});

允许使用以下HTML语法:

<div ng-repeat="message in data.messages" ng->   <hr>   <div ng-if="showFrom(message)">       <div>From: {{message.from.name}}</div>   </div>       <div ng-if="showCreatedBy(message)">      <div>Created by: {{message.createdBy.name}}</div>   </div>       <div ng-if="showTo(message)">      <div>To: {{message.to.name}}</div>   </div>    </div>

小提琴。

replaceWith()用于从DOM中删除不需要的内容。

另外,正如我在Google+上提到的那样,如果您想使用ng-show而不是自定义指令,则ng-
style可能可以有条件地加载背景图片。(为了其他读者的利益,Jon在Google+上说:“两种方法都使用ng-
show,我想避免这种方法,因为它使用display:none并在DOM中留下了额外的标记。在这种情况下,这是一个特殊的问题,因为隐藏的元素将具有背景图片,该图片仍将在大多数浏览器中加载。”)。
另请参阅如何在AngularJS中有条件地应用CSS样式?

的角度的UI的UI-如果指令手表更改如果条件/表达。我的不是。因此,虽然我的简单实现可以在模型发生更改时正确地更新视图,从而仅影响模板输出,但是如果条件/表达式答案发生更改,它将无法正确地更新视图。

例如,如果模型中from.name的值更改,则视图将更新。但是,如果delete$scope.data.messages[0].from使用from,则将从视图中删除from名称,但不会从视图中删除模板,因为不会监视if-condition / expression。

angularjs – ng-grid行模板中的日期格式

angularjs – ng-grid行模板中的日期格式

我创建了一个包含以下列定义的ng-grid:

columns: [
  { field: "CompanyPkid",visible: false },{ field: "CompanyName",{ field: "StartDate",visible: false,cellFilter: "date:'yyyy-MM-dd'" },{ field: "CompanyId",displayName: "Company ID",cellTemplate: "<div class=\"ngCellText\" ng-class=\"col.colIndex()\">"+
                    "<a href=\"Company/Edit/{{row.getProperty('CompanyPkid')}}\">"+
                      "{{row.getProperty(col.field)}}"+
                    "</a><br />"+
                    "{{row.getProperty('CompanyName')}}<br />"+
                    "{{row.getProperty('StartDate')}}"+
                  "</div>",}],

其中一列是隐藏日期列.

其中一列使用模板并包含隐藏日期列中的值.

我想将多行列中的日期格式化为yyyy-MM-dd.这可能吗?如果是这样,怎么样?

解决方法

使用 date过滤器,如下所示:

{{row.entity.StartDate | date:'yyyy-MM-dd'}}

AngularJS – 单个模板中的多个ng视图

AngularJS – 单个模板中的多个ng视图

我正在使用AngularJS构建一个动态Web应用程序.是否可以在单个模板上使用多个ng-view?

解决方法

您只能有一个ng视图.

您可以通过多种方式更改其内容:ng-include,ng-switch或通过routeProvider映射不同的控制器和模板.

angularjs – 单个模板中的多个视图(angular js)

angularjs – 单个模板中的多个视图(angular js)

我通过使用angular js构建一个动态Web应用程序。是否可以在单个模板上有多个ng-view?
你只能有一个ng-view。

您可以通过以下几种方式更改其内容:ng-include,ng-switch或通过routeProvider映射不同的控制器和模板。

angularjs – 在Angular ui-router子模板中不起作用

angularjs – 在Angular ui-router子模板中不起作用

我已经注册了一个孩子.child1状态测试,这里父母(测试)工作正常.当我导航到状态test.child1 URL变为#/ test / child1但视图保持不变,子模板不工作
angular.module('uiRouterSample.contacts',[
  'ui.router'
])

.config(
  [          '$stateProvider','$urlRouterProvider',function ($stateProvider,$urlRouterProvider) {
      $stateProvider
      .state('test',{
            url:'/test',template:'<a ui-sref="test">Parent</a> -> <a ui-sref=".child1">child1</a>',controller: ['$scope','$state','contacts','utils',function (  $scope,$state,contacts,utils) {
              }]
        }).state('test.child1',{
            url:'/child1',template:'Child template working fine'
        })
    }
  ]
)
您需要在父状态模板(测试状态)中使用ui-view指令:
template:'<div ui-view/> <a ui-sref="test">Parent</a>  <a ui-sref=".child1">child1</a></div>',

基本上,每当你在ui-router中有一个具有子状态的状态时,那个子状态的直接父pf也必须在其模板中有一个ui-view指令.

我们今天的关于AngularJS模板中的条件逻辑angularjs $q的分享已经告一段落,感谢您的关注,如果您想了解更多关于angularjs – ng-grid行模板中的日期格式、AngularJS – 单个模板中的多个ng视图、angularjs – 单个模板中的多个视图(angular js)、angularjs – 在Angular ui-router子模板中不起作用的相关信息,请在本站查询。

本文标签: