gpt4 book ai didi

dart - 如何获得使用 AngularDart 的路线?

转载 作者:行者123 更新时间:2023-12-04 14:45:52 24 4
gpt4 key购买 nike

这是我的代码,

import 'package:angular/angular.dart';

class AppModule extends Module {

AppModule(){
type(AppController);
type(LoginController);
type(RouteInitializer, implementedBy: AppRouter);
}

}

class AppRouter implements RouteInitializer {

init(Router router, ViewFactory view) {
router.root
..addRoute(
name: 'login',
path: '/login',
enter: view('app/views/login.tpl.html'))
..addRoute(
defaultRoute: true,
name: 'index',
enter: view('app/views/index.tpl.html'));
}

}

@NgController(selector: '[app-ctrl]', publishAs: 'ctrl')
class AppController {

}

@NgController(selector: '[login-ctrl]', publishAs: 'ctrl')
class LoginController {

Http _http;
String works = 'Works.';

LoginController(this._http);

}

没有路线有效,单击“#/login”链接不会更改 url 或 View 。

日志说
clicked /app/web/index.html#/login
route /app/web/index.html [Route: null]
route [Route: index]

我究竟做错了什么?

最佳答案

这段代码可能有几个问题。据我所知,最可能的问题是路由使用的是 pushState。当您使用 pushState 时,您不会使用哈希来操作 url。有关这方面的更多信息,请参阅:
Manipulating Browser History

当浏览器支持时,Angular 将使用推送状态。

bind(NgRoutingUsePushState, toValue: new NgRoutingUsePushState.value(false));

给你一个模块:

class AppModule extends Module {

AppModule(){
bind(AppController);
bind(LoginController);
bind(RouteInitializer, implementedBy: AppRouter);
bind(NgRoutingUsePushState, toValue: new NgRoutingUsePushState.value(false));
}
}

其他可能的问题包括:
  • 没有 ng-view 指令
  • 未在 app/views/login.tpl.html 和 app/views/index.tpl.html 中设置 ng-bind-route

  • 当我进行所有这些更改时,您的代码在导航到 #/login 时对我来说可以正常工作

    关于dart - 如何获得使用 AngularDart 的路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030527/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com