a.html
<p ui-view='index'></p>
b.html
<p ui-view='content'></p>
c.html
<p>content1</p>
d.html
<p>content2</p>
a.html中绑定事件触发content视图切换到c.html或d.html
$stateProvider的config应该怎么配置
js里如果手动做切换?
PHP中文网2017-05-15 16:51:32
귀하의 질문에는 필요한 문맥 정보가 부족하여 추측이나 추측에만 의존하여 답변을 완료할 수 있습니다
모든 SPA 프레임워크의 라우팅 시스템은 동일합니다. 각 경로는 애플리케이션 상태에 해당하며 애플리케이션 상태의 변경 사항은 URL 변경 사항에 반영됩니다. 반대로 URL이 변경되면 라우팅 시스템이 애플리케이션을 동적으로 새로 고칩니다. 프로그램의 상태입니다.
귀하의 예에서 경로 항목에는 상수 ui-view='content'
만 있지만 다른 보기(c.html
및 d .html<)가 필요합니다. /code>)는 이를 동적으로 입력합니다. 이는
c.html
및 d.html
이 애플리케이션의 서로 다른 상태에 대응해야 라우팅 시스템이 동적으로 입력할 수 있음을 의미합니다. 업데이트되었습니다. ui-view='content'
,但却要不同的视图(c.html
和 d.html
)动态的进入其中,这就意味着 c.html
和 d.html
要对应应用程序的不同状态,路由系统才可以据此而动态的更新。
假设你的例子是这样的:
当 /posts/show/c
的时候,ui-view='content'
显示 c.html
当 /posts/show/d
的时候,ui-view='content'
显示 d.html
于是我们才可以对应到 ui-router 里面:
state
是 posts.show
动态片段,即 URLs 中可变的部分,对应 state
里的 url
,我把它命名为 :name
view
的入口是 content@posts.show
这样便足以写出绝大部分代码了:
angular.module('YourApp').config(function ($stateProvider) {
$stateProvider.state('posts.show', {
url: '/show/:name',
views: {
'content@posts.show': {
templateUrl: /* TODO */,
controller: ...
}
}
});
});
唯一剩下的问题是:当 :name
变化的时候,如何更新 templateUrl
?
之前说过的,URLs 的变化会引发路由系统更新应用程序的状态,这些变化在路由系统中被保存在 $params
对象中,我们可以用该对象提取变化的部分并生成正确的 templateUrl
。在这里我写一个助手函数来做这件事情:
angular.module('YourApp').config(function ($stateProvider) {
$stateProvider.state('posts.show', {
url: '/show/:name',
views: {
'content@posts.show': {
templateUrl: getTemplateUrl,
controller: ...
}
}
});
function getTemplateUrl() {
return: 'templates/posts/' + $params.name + '.html';
}
});
ui-router 这个模块,templateUrl
不只是接收字符串,也可以接收函数的返回值。于是你可以得到:
当 /posts/show/c
的时候,templateUrl
是 templates/posts/c.html
当 /posts/show/d
的时候,templateUrl
是 templates/posts/d.html
相应的,在你 index
里的导航链接就要负责切换 /posts/show/:name
/posts/show/c
일 때 ui-view='content'
는 c.html
를 표시합니다🎜/posts/show/d
일 때 ui-view='content'
는 d.html
를 표시합니다🎜상태
는 posts.show
🎜상태
의 url
에 해당합니다. 저는 이름을 :name
🎜 <으로 지정했습니다. /li>
view
입구는 content@posts.show
🎜:name
이 변경될 때 templateUrl
을 업데이트하는 방법입니다. 🎜
🎜앞서 언급했듯이 URL이 변경되면 라우팅 시스템이 애플리케이션의 상태를 업데이트하게 됩니다. 이러한 변경 사항은 라우팅 시스템의 $params
개체에 저장됩니다. 부분을 변경하고 올바른 templateUrl
을 생성하세요. 여기에 이를 수행하는 도우미 함수를 작성합니다. 🎜
으아아아
🎜ui-router 이 모듈인 templateUrl
은 문자열뿐만 아니라 함수의 반환 값도 수신합니다. 따라서 다음을 얻을 수 있습니다: 🎜
/posts/show/c
일 때 templateUrl
은 templates/posts/c.html
🎜/posts/show/d
일 때 templateUrl
은 templates/posts/d.html
🎜index
의 탐색 링크는 /posts/show/:name
의 변경 사항을 전환하는 역할을 합니다. UI에서 동적 조각에 해당하는 링크를 생성하는 방법입니다. -router 문서에 있으니 직접 찾아보세요. 🎜phpcn_u15822017-05-15 16:51:32
위 사람들이 게임을 너무 복잡하게 만드는 것 같아요. 그냥 UI 보기 튜토리얼을 보는 게 좋지 않을까요
https://scotch.io/tutorials/a...