답변:
SPA (Single Page Application)에서 라우팅 목적으로 사용되는 것과 동일한 작업을 수행합니다.
컨트롤러 및보기에 대한 URL (HTML 부분). $ location.url ()을 감시하고 경로를 기존 경로 정의에 매핑하려고 시도합니다.
HTML
<div ng-view></div>
위의 태그는 각도의 (구성 단계) $routeProvider.when()
에서 언급 한 조건 에서 템플릿을 렌더링합니다..config
한계 :-
ng-view
페이지 만 포함 할 수 있습니다$routeProvider
실패합니다. (그것을 달성하기 위해, 우리는 같은 지시를 사용할 필요가 ng-include
, ng-switch
, ng-if
, ng-show
SPA에서 그들을 가지고, 나쁜 보이는)AngularUI 라우터는 인터페이스의 일부를 상태 머신으로 구성 할 수있는 AngularJS의 라우팅 프레임 워크입니다. UI- 라우터는 상태를 중심으로 구성되며, 다른 동작뿐만 아니라 경로가 선택적으로 포함될 수 있습니다.
다중 및 명명 된 뷰
또 다른 훌륭한 기능은 템플릿에 여러 ui-view를 가질 수 있다는 것입니다.
여러 개의 병렬 뷰는 강력한 기능이지만 view
s 를 중첩 하고 해당 뷰를 중첩 된 상태와 연결 하여 인터페이스를보다 효과적으로 관리 할 수 있습니다 .
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
ui-router
의 힘 의 대부분은 중첩 된 상태 및보기를 관리 할 수 있다는 것입니다.
찬성
ui-view
한 페이지에 여러 개 를 가질 수 있습니다ui-view="some"
절대 라우팅을 사용하여 상태를 변경할 수 있습니다 @
.@
변경 에만 사용 하는 것 ui-view="some"
입니다. ui-view
중첩 여부를 확인 하는 대신 이를 대체합니다 .ui-sref
작성 하고 형식으로 상태 매개 변수를 제공 할 수 있습니다.href
URL
json
상태가 포함 된 다양한 중첩보기로 유연성을 높이려면 원하는 것을 선호합니다. ui-router
$stateProvider
&$routeProvider
URLs
라우팅하는 동안 Angular의 자체 ng-Router가 고려되고 states
URL과 함께 UI-Router가 사용 됩니다.
상태는 명명 된, 중첩 및 병렬 뷰에 바인딩되므로 응용 프로그램 인터페이스를 강력하게 관리 할 수 있습니다.
ng-router에서는 <a href="">
태그 를 통해 링크를 제공 할 때 URL에 대해 매우주의 해야합니다. UI- 라우터 state
에서는 명심해야합니다. 와 같은 링크를 제공합니다 <a ui-sref="">
. <a href="">
ng-router에서와 마찬가지로 UI-Router에서 사용하더라도 여전히 작동합니다.
따라서 언젠가 URL을 변경하기로 결정하더라도 URL state
은 동일하게 유지되며에서 URL 만 변경하면됩니다 .config
.
ngRouter를 사용하여 간단한 앱을 만들 수 있지만 UI-Router를 사용하면 복잡한 앱을 훨씬 쉽게 개발할 수 있습니다. 여기 위키가 있습니다.
$ route : URL을 컨트롤러 및보기 (HTML 부분)에 딥 링크하는 데 사용되며 기존 경로 정의에서 경로를 매핑하기 위해 $ location.url ()을 감시합니다.
ngRoute를 사용하면 경로는 $ routeProvider로 구성되고 ui-router를 사용하면 경로는 $ stateProvider 및 $ urlRouterProvider로 구성됩니다.
<div ng-view></div>
$routeProvider
.when('/contact/', {
templateUrl: 'app/views/core/contact/contact.html',
controller: 'ContactCtrl'
});
<div ui-view>
<div ui-view='abc'></div>
<div ui-view='abc'></div>
</div>
$stateProvider
.state("contact", {
url: "/contact/",
templateUrl: '/app/Aisel/Contact/views/contact.html',
controller: 'ContactCtrl'
});