2014-10-05 85 views
0

我得到错误的行为与我的ng-show指令。angularjs ng - 显示不能按预期工作

<span class="spanLabel" ng-show="!minimumCharactersMet()" >You need at least {{ howManyMoreCharactersNeeded() }} characters more</span> 
<span class="spanLabel" ng-show="isNumberOfCharactersWithinRange()" >Remaining characters: {{ howManyCharactersRemaining() }}</span> 
<span class="spanLabel warning" ng-show="anyCharactersOver()" >{{howManyCharactersOver()}} characters too many</span> 

当我尝试输入文本跨度从下面有计数警告的最低2个字符,倒计时作品的用户和后入住,不隐瞒。第二个不显示。

这是我的plunker link与所有功能和HTML。 任何想法,为什么我不能得到它的工作?

谢谢

回答

1

除了什么@Reins说,其他两个语句有这些错误:

  • 你错过了同函数调用支架上anyCharactersOver

  • howMany函数中的return语句有一个括号错误。它应该是

    return (characters < 0 ? Math.abs(characters) : 0);

  • 而且,isNumberOfCharactersWithinRange的返回值应该是:

    $scope.minimumCharactersMet() && !$scope.anyCharactersOver();

Plunker

PS:我会用ng-hide代替ng-show(!)

+2

'字符<0? Math.abs(characters):0'与Math.abs(characters)相同 – Shomz 2014-10-05 13:54:34

2

看起来好像你的布尔错误。 minimumCharactersMet()布尔值应该调用作用域上的函数。像这样:

$scope.minimumCharactersMet = function() { 
    return ($scope.howManyMoreCharactersNeeded() === 0); 
}; 

请注意howManyMoreCharactersNeeded调用后的大括号。否则,就好像你要求一个变量而不是一个函数。

working plnkr

+0

谢谢。 rlecaro2的帖子有所有的错误,这就是我期待的。我不知道在SO – ytsejam 2014-10-05 13:54:59

+0

@ytsejam中做正确的事情,你应该接受最能帮助你的答案。 – Shomz 2014-10-05 13:56:14