ng-if搞砸我的模板非常糟糕

时间:2015-10-10 17:08:20

标签: javascript angularjs

m developing angular app for football scores, I get the scores and if it s -1:-1,表示游戏尚未播放。 当我进行检查时,我遇到了问题,如果弄糟了我的模板,它仍会输出值,但它会在不应该的地方执行

这是代码

<div ng-repeat="day in days">
<div class="title-link">{{day  | date:'EEEE, MMMM d, y'}} </div>

    {{game.homeTeamName}}
     <div ng-if="game.result.goalsHomeTeam != '-1'">
      {{game.result.goalsHomeTeam}}
     </div>

    : 
    <div ng-if="game.result.goalsAwayTeam != '-1'">
      {{game.result.goalsAwayTeam}}
     </div>
    {{game.awayTeamName}} 

2 个答案:

答案 0 :(得分:0)

我认为你应该正确解决这个问题。

首先,看起来好像你将布尔值保持为一个内容为'-1'的字符串。

这样想。如果我问你“游戏是否播放?”你回答说“冲一个!”那会有意义吗?

不,它不会,因为您提出的问题应该得到是/否或真/假响应。

因此,首先,您应该记录游戏是否以布尔值播放,评估为真假。如果你愿意的话,你可以通过$观察分数来做到这一点,然后继续将这个与分数无关的值存储为自己的值。

这可能会解决您的所有问题,因为ng-show / hide / if无论如何都要评估为true / false。

其次,ng-if文档声明:

请注意,使用ngIf删除元素时,其范围将被销毁,并且在还原元素时会创建新范围。在ngIf中创建的作用域使用原型继承从其父作用域继承。这一点的一个重要含义是,如果在ngIf中使用ngModel绑定到父作用域中定义的javascript原语。在这种情况下,对子作用域内的变量所做的任何修改都将覆盖(隐藏)父作用域中的值。

如果没有真正看到你的代码,很难说,但我认为可能导致你的问题的是ng-if指令的范围行为。

如果你有一个jsfiddle或想要屏幕分享,我很乐意帮你调试并解释它。

  • 克里斯

P.S。这是ng-if的源代码。值得一看的是了解实际情况。

https://github.com/angular/angular.js/blob/master/src/ng/directive/ngIf.js#L3

p.p.s了解childScope / prototypal inheritance。

https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance

答案 1 :(得分:0)

你有一个强制转换问题 -1和'-1'你可以使用parseInt来解决这个问题。