AngularJS:使用路径作为ng-repeat中的过滤器

时间:2013-09-19 02:53:05

标签: angularjs routes

我对Angular很新,我在列表中有一个ng-repeat,我点击了一些标签进行过滤。这是标签的样子

   <a href="javascript:;" ng-click="$parent.zonefilter=zone.name" class="ng-binding"><i class="icon-chevron-right"></i> {{ zone.name }}</a>

以下是清单:

    <div ng-repeat="obj in objs | filter: zonefilter" class="col-lg-4 ng-scope" ng-controller="MonitorCtrl" ng-animate=" 'animate' ">
  <div class="panel panel-primary panel-active">

    <a href="/{{obj.id}}" target="_blank" class="text-center frame frame_white" ng-class="{black:'frame frame_black', white:'frame frame_white'}[obj.background]">
    {{obj.title}}
    </a>

  </div>
</div>

它工作正常,但我希望能够通过网址直接点击此过滤器。如何设置像/ edit / obj#lobby这样的网址,将zonefilter设置为大厅?

我在文档中看到的所有路线都是重定向到一个全新的模板,这不是我想要的。

我确定通过问这个问题我看起来很愚蠢。

谢谢!

1 个答案:

答案 0 :(得分:1)

听起来你真正想要的是通过另一个项目更容易实现的状态管理:https://github.com/angular-ui/ui-router

您还可以在定义路径时尝试使用resolve上的$routeProvider属性,以便将特定过滤器注入当前控制器,然后可以在范围中使用

$routeProvider.when( 'lobby', {
    controller: 'RoomController',
    resolve: {
        zonefilter: 'lobby'
    }
});

myApp.controller( 'RoomController', function( zonefilter ) {
   // zonefilter === 'lobby'
});

这也可能有用,但我肯定会考虑使用ui-router这样的东西,因为它会更清洁,更容易。