1

我对 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>

它工作得很好,但我希望能够通过 url 直接点击这个过滤器。如何设置 /edit/obj#lobby 之类的 url 以将 zonefilter 设置为 lobby ?

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

我敢肯定我问这个看起来很愚蠢,但是很好。

谢谢 !

4

1 回答 1

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 来寻找类似的东西,因为它会更干净、更容易。

于 2013-09-19T04:16:12.397 回答