현재 로그인이 가능하고 로그인 할 때 기본 대시 보드를 보여주는 기본적인 Angular Dart 프로그램이 있습니다. 로그인을 마치면 대시 보드 경로로 리디렉션됩니다. 로그인 컨트롤러 내에서 라우터 개체에 액세스하는 방법을 모르겠지만 DI를 사용하여 컨트롤러 작업에 Router
을로드하려고 시도했지만 이전에 초기화 된 것 대신 (예상대로) 새 Router
개체를 제공합니다.Angular Dart 컨트롤러의 액세스 라우터
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