Angularjs 自定义过滤器后不更新重复视图
我有一个ng repeat,它根据用户选择的类别过滤出项目。当页面呈现时,类别为“全部”,并且不过滤任何项目。共有三个类别,所选类别将传递到自定义筛选器中。当我调试时,当我更改类别但视图没有更改时,我可以看到列表正在正确更新。如果我单击列表中的一个项目,则ng click将强制生成$digest,视图将正确呈现。是否有任何方法可以强制视图在自定义过滤器之后重新渲染?肯定还有别的事情发生,因为我在别的地方有自定义过滤器 我正在使用ui路由器,所以这个视图是父ui视图,在下面我有另一个ui视图,在父控制器中,我从列表中获取第一层并加载该子视图。我不确定这是否是影响这件事的原因 看法 控制器Angularjs 自定义过滤器后不更新重复视图,angularjs,angularjs-ng-repeat,angular-ui-router,Angularjs,Angularjs Ng Repeat,Angular Ui Router,我有一个ng repeat,它根据用户选择的类别过滤出项目。当页面呈现时,类别为“全部”,并且不过滤任何项目。共有三个类别,所选类别将传递到自定义筛选器中。当我调试时,当我更改类别但视图没有更改时,我可以看到列表正在正确更新。如果我单击列表中的一个项目,则ng click将强制生成$digest,视图将正确呈现。是否有任何方法可以强制视图在自定义过滤器之后重新渲染?肯定还有别的事情发生,因为我在别的地方有自定义过滤器 我正在使用ui路由器,所以这个视图是父ui视图,在下面我有另一个ui视图,在父
app.controller('StoriesController', ['$scope', '$rootScope', '$state', 'StoryService',
function($scope, $rootScope, $state, StoryService) {
$scope.storyConfig = {};
$scope.allStories = StoryService.getAll();
$scope.storyConfig.filter = 'all';
if ($scope.storyConfig.activeStoryId === undefined) {
$scope.storyConfig.activeStoryId = $scope.allStories[0]._id;
}
$state.go('stories.story', {storyId:$scope.storyConfig.activeStoryId});
}]);
对于任何感兴趣的人,我都知道问题出在哪里。在每个故事列表项上,我都应用了一种过渡样式。有了这个,我试图将故事项向左滑动,并将其设置为动画,然后在动画完成后将其从列表中删除
ul li{
position:relative;
left:0;
transition:left 0.2s ease;
}
ul li.swipe-left {
left:-320px;
}
你知道为什么这可能会推迟美元摘要的时间吗?有没有更好的方法可以用angular在视图外设置列表项的动画?我已经读了好几遍了,但我仍然不理解您的问题。。你能考虑改写吗?我部分不理解“简单切换部分”。当你点击的时候,它听起来很好用。。那么,这是否意味着在初始加载时,其已损坏?很抱歉造成混淆。我改写了第一部分。切换只是我发布的HTML中的all、watch和move。页面将加载所有选定内容,当我单击“观看”时,自定义过滤器将返回仅包含观看的故事的列表,但实际视图仍显示所有故事。我刚刚获取了您的代码并创建了一个小提琴。。。但我看不出问题所在。我不得不让它安静下来,而且我也没有使用ui路由器。我没有看到你的代码有什么不好的地方。当我第一次加载我的应用程序时,一切都按预期进行,但一旦我用ui路由器切换状态,它就会开始工作。这就是我在描述中提到ui路由器的原因。这真的很奇怪。你在你的子状态中引用了任何变量吗?我建议把一个plunkr放在一起,这应该是一个非常快速的解决方案。。。
app.controller('StoriesController', ['$scope', '$rootScope', '$state', 'StoryService',
function($scope, $rootScope, $state, StoryService) {
$scope.storyConfig = {};
$scope.allStories = StoryService.getAll();
$scope.storyConfig.filter = 'all';
if ($scope.storyConfig.activeStoryId === undefined) {
$scope.storyConfig.activeStoryId = $scope.allStories[0]._id;
}
$state.go('stories.story', {storyId:$scope.storyConfig.activeStoryId});
}]);
ul li{
position:relative;
left:0;
transition:left 0.2s ease;
}
ul li.swipe-left {
left:-320px;
}