Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 自定义过滤器后不更新重复视图_Angularjs_Angularjs Ng Repeat_Angular Ui Router - Fatal编程技术网

Angularjs 自定义过滤器后不更新重复视图

Angularjs 自定义过滤器后不更新重复视图,angularjs,angularjs-ng-repeat,angular-ui-router,Angularjs,Angularjs Ng Repeat,Angular Ui Router,我有一个ng repeat,它根据用户选择的类别过滤出项目。当页面呈现时,类别为“全部”,并且不过滤任何项目。共有三个类别,所选类别将传递到自定义筛选器中。当我调试时,当我更改类别但视图没有更改时,我可以看到列表正在正确更新。如果我单击列表中的一个项目,则ng click将强制生成$digest,视图将正确呈现。是否有任何方法可以强制视图在自定义过滤器之后重新渲染?肯定还有别的事情发生,因为我在别的地方有自定义过滤器 我正在使用ui路由器,所以这个视图是父ui视图,在下面我有另一个ui视图,在父

我有一个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;
}