我有一個基本的Angular Dart程序,當前允許登錄並在登錄時顯示基本儀表板。我想要做的是在成功登錄後重定向到儀表板路徑。我不知道如何從登錄控制器訪問路由器對象,嘗試使用DI將Router
加載到控制器工作,但給我一個新的Router
對象而不是以前初始化的對象(如預期的那樣)。從角度飛鏢控制器訪問路由器
main.dart
import 'package:angular/angular.dart';
import 'dart:convert' show JSON;
import 'dart:html';
class TTRouter implements RouteInitializer {
Cookies _cookies;
TTRouter(this._cookies);
init(Router router, ViewFactory view) {
router.root
..addRoute(
name: 'login',
path: '/login',
enter: view('login.partial.html'))
..addRoute(
name: 'home',
path: '/dashboard',
enter: view('dashboard.partial.html'));
}
}
@NgController(
selector: '[login-controller]',
publishAs: 'ctrl')
class LoginController {
Http _http;
Scope _scope;
LoginController(this._scope, this._http);
login() {
// Login API request ommitted
// TODO: insert redirect to 'home' route here
}
}
class TTModule extends Module {
TTModule() {
type(RouteInitializer, implementedBy: TTRouter);
type(LoginController);
factory(NgRoutingUsePushState,
(_) => new NgRoutingUsePushState.value(false));
}
}
main() => ngBootstrap(module: new TTModule());
login()
使用ng-submit="ctrl.login()
從登錄局部視圖調用。
如果我以錯誤的方式處理這個問題,我將不勝感激對代碼結構的任何評論。我對Dart和Angular都是新手(閱讀/觀看的教程,但這是我自己構建的第一個應用程序)。
謝謝。你介意擴展我如何從控制器訪問這個值嗎? – Ollie
沒有區別。區別在於你如何通知DI如何處理這種類型。而不是一個新的實例,您將始終收到提供給'value(...)'方法的那個實例。 –
我明白了,我犯了一個錯誤,現在我已經開始工作了。非常感謝! – Ollie