角度ng-show不显示数据
问题描述:
我想过滤日期。应显示当前日期并隐藏未来日期。但是每当我使用ng-show时,一切都会关闭。看到自己 - 这里是小提琴角度ng-show不显示数据
<div ng-controller="date">
<div ng-repeat="d in dates">
<ul>
<div ng-show="(checkDate==true)"><li>{{d.thisDate() | date:"mediumDate"}}</li></div>
</ul>
</div>
</div>
http://jsfiddle.net/adeling/Tb9j5/22/
我将感谢任何意见。
答
有几个问题。
- 您应该使用ng-show =“d.checkDate()”。
<div ng-app="milo">
<div ng-controller="date">
<div ng-repeat="d in dates">
<ul>
<div ng-show="d.checkDate()">
<li>{{d.thisDate() | date:"mediumDate"}}
</li>
</div>
</ul>
</div>
</div>
- 你不能比较两个新的日期,并期望他们是平等的。例如,如果您尝试此操作,它将返回false。
alert(new Date() == new Date());
- 你不能在每个元素的作用域中引用你的函数thisDate。它是未定义的。你应该像访问一个函数一样访问它,否则你会得到函数本身,而不是函数的结果。所以你的代码可以被重构成这样的东西。
var milo = angular.module('milo',[]);
alert(new Date() == new Date());
function date($scope){
$scope.dates = [
{
id: 0,
thisDate: function(){
return new Date();
},
checkDate: function(){
if(this.thisDate()>new Date()){
return false;
}
else {
return true;
}
}
},
{
id: 1,
thisDate: function(){
return new Date();
},
checkDate: function(){
if(this.thisDate()>new Date()){
return false;
}
else {
return true;
}
}
},
{
id: 2,
thisDate: function(){
return 141232741945463;
},
checkDate: function(){
if(this.thisDate()>new Date()){
return false;
}
else {
return true;
}
}
}
];
};
milo.controller('date', date);
希望这会有所帮助。
答
您有2个问题。
checkDate
在功能上是不正确的。您在最后的else
声明中不返回任何值。而不是
ng-show="(checkDate==true)"
你应该写:ng-show="d.checkDate()"
。
答
<div ng-show="(checkDate==true)">
这意味着 “嘿,角,显示此div
如果$scope.checkDate === true
”
好像你想打电话给你的$scope.dates
项目checkDate()
方法
为此呼叫使用<div ng-show="d.checkDate()">
但您的checkDate()
将$scope.thisDate
与new Date()
,但没有thisDate
变量在$scope
,所以结果是false
和角度ng-show
指令将隐藏所有你的div
感谢佩德罗,你的回答是真正有帮助和教学:) – codeman 2014-10-05 12:24:37