【发布时间】:2014-12-27 00:24:33
【问题描述】:
我正在尝试显示组的第一个值并隐藏 ng-repeat 中的所有其他类似值。我正在让 if/else 工作,但它实际上将“false”作为字符串返回。这是我目前所拥有的。
app.filter('dateSort', function() {
var prevVal = null;
return function(input) {
if (prevVal !== input.uniquedate) {
prevVal = input.uniquedate;
return moment(input.jsdatetime).format('dddd,\n MMMM Do');
} else {
return false;
}
};
});
我也尝试过将此作为指令,但没有成功。
app.directive('hideon', function() {
var prevVal = $index[-1].uniquedate;
return function(scope, element, attrs) {
scope.$watch(attrs.hideon, function(value, oldValue) {
if(element.uniquedate !== prevVal) {
element.show();
} else {
element.hide();
}
}, true);
}
});
感谢任何帮助。我假设最好的方法是使用指令。对于带有返回对象(包括 false)的过滤器本身,在我对任何数据进行排序后,这些值不成立。那是我开始尝试将它与 $watch 一起使用的时候。
这是我开始使用的 Codepen-http://codepen.io/drewbietron/pen/dKjhe
【问题讨论】:
-
ngHide/ngShow/ngIf 不起作用吗?
-
@TheSharpieOne 我已经尝试了多个版本,但均未成功。过滤器功能有效,但在调用过滤器后不会更新。我还需要该元素从 DOM 中完全消失,因为该元素具有 CSS 填充 - 一个空白框仍然显示没有内容。
标签: angularjs filter directive watch