6

これは私のコードです、

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 またはビューは変更されません。

ログは言う

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

私は何を間違っていますか?

4

1 に答える 1

7

このコードにはいくつかの問題がある可能性があります。私が見ることができる最も可能性の高い問題は、ルーティングが pushState を使用していることです。pushState を使用する場合、ハッシュを使用して URL を操作しません。詳細については、次を参照してください: ブラウザ履歴の操作

ブラウザーがサポートしている場合、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 に移動するときにコードが正しく機能しました

于 2013-11-17T23:56:02.460 に答える