Angular Dart将数据从路由服务传递到控制器

时间:2014-02-28 20:16:29

标签: routing dart angular-dart

我很难找到一种方法将数据从路由器传输到我的控制器。路由上的enter方法正确地从服务中获取数据,因为print方法在控制台中显示JSON响应。

我的模块看起来像这样:

class MyAppModule extends Module {
  MyAppModule () {
    type(UsersService);
    type(UsersController);
    type(RouteInitializerFn, implementedBy: MyAppRouteInitializer);
    factory(NgRoutingUsePushState,
        (_) => new NgRoutingUsePushState.value(false));
  }
}

和我的路由器的简化版

class MyAppRouteInitializer {

  final UsersService _userService;

  MyAppRouteInitializer(this._userService);

  void call(Router router, ViewFactory views) {
     views.configure({
        'users': ngRoute(
         path: '/users',
         view: 'views/users/users.html',
         mount: {
            'list': ngRoute(
             path: '',
             view: 'views/users/list.html',
             enter: (RouteEnterEvent e) {
                _userService.all((HttpResponse response){
                    var data = response.data['body'];
                    print(data);
                });
             }
          }
        )
      });
   }
}

目前我的控制器几乎是空的,看起来像这样

@NgController(
    selector: '[users-controller]',
    publishAs: 'userCtrl'
)

class UsersController {
     var list;

     UsersController() {

     }

}

如何将服务响应提供给控制器的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

为什么要在路径输入事件处理程序中执行此操作?
您甚至不使用路线或活动中的任何信息 您只需在模块中注册UserService,然后将其注入UserController

class MyAppModule extends Module {
  MyAppModule() {
    type(UsersService);
  }
}

@NgController(
  selector: '[users-controller]',
  publishAs: 'userCtrl'
)

class UsersController {
  var list;

  UsersService _usersService;

  UsersController(this._usersService) {
    _userService.all((HttpResponse response){
                    var data = response.data['body'];
                    print(data);
  }
}