我打算在我的大型应用程序中使用AngularJS.所以我正在寻找合适的模块.
是什么区别(角route.js)ngRoute和UI的路由器(角-UI-router.js)模块?
在使用ngRoute的许多文章中,使用$ routeProvider配置路由.但是,当与ui-router一起使用时,路由配置为$ stateProvider和$ urlRouterProvider.
我应该使用哪个模块来提高可管理性和可扩展性?
javascript angularjs angularjs-routing angularjs-module angular-ui-router
我是AngularJS的新手,我对如何在以下场景中使用angular-"ui-router"感到困惑:
我正在构建一个包含两个部分的Web应用程序.第一部分是主页及其登录和注册视图,第二部分是仪表板(成功登录后).
我已经index.html为home部分创建了一个带有角度app和ui-router配置来处理/login和/signup查看的部分,并且dashboard.html仪表板部分还有另一个文件,其app和ui-routerconfig用于处理许多子视图.
现在我完成了仪表板部分,并且不知道如何将这两个部分与不同的角度应用程序结合起来.我怎么能告诉家庭应用程序重定向到仪表板应用程序?
我需要传递并接收两个参数到我想转移到使用ui-srefui-router的状态.
比如使用以下链接将状态转换为homewith foo和bar参数:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Run Code Online (Sandbox Code Playgroud)
控制器中的接收foo和bar值:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Run Code Online (Sandbox Code Playgroud)
我在控制器中得到undefined了$stateParam.
有人可以帮我理解如何完成它吗?
编辑:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: …Run Code Online (Sandbox Code Playgroud) 我正在使用Angular UI路由器,并希望重新加载当前状态并刷新所有数据/重新运行控制器以获取当前状态及其父级.
我有3个州级别:directory.organisations.details
directory.organisations包含一个包含组织列表的表.单击表中的项目会加载directory.organisations.details并使用$ StateParams传递项目的ID.因此,在详细信息状态中,我加载此项目的详细信息,编辑它们,然后保存数据.到目前为止都很好.
现在我需要重新加载此状态并刷新所有数据.
我试过了:
$state.transitionTo('directory.organisations');
Run Code Online (Sandbox Code Playgroud)
哪个进入父状态,但没有重新加载控制器,我想因为路径没有改变.理想情况下,我只想保留在directory.organisations.details状态并刷新父级中的所有数据.
我也尝试过:
$state.reload()
Run Code Online (Sandbox Code Playgroud)
我在API WIKI for $ state.reload上看过这个"(控制器现在重新修复的错误,很快就会修复)."
任何帮助,将不胜感激?
请解释之间的差异$routeProvider,并$stateProvider在AngularJS.
哪个是最佳做法?
有没有办法获得当前状态的先前状态?
例如,我想知道当前状态B之前的状态是什么(之前的状态是状态A).
我无法在ui-router github doc页面中找到它.
我面临的问题是在两个状态之间传递数据而不暴露网址中的数据,就像用户不能真正直接落在这种状态上一样.
例如.我有两个状态"A"和"B".我正在状态"A"中进行一些服务器调用,并将调用的响应传递给状态"B".服务器调用的响应是一个字符串消息,这很长,所以我不能在url中公开它.
那么在角度ui路由器中有没有办法在状态之间传递数据,而不使用url params?
目前我们的项目使用默认$routeProvider,我正在使用这个"hack",url无需重新加载页面即可进行更改:
services.service('$locationEx', ['$location', '$route', '$rootScope', function($location, $route, $rootScope) {
$location.skipReload = function () {
var lastRoute = $route.current;
var un = $rootScope.$on('$locationChangeSuccess', function () {
$route.current = lastRoute;
un();
});
return $location;
};
return $location;
}]);
Run Code Online (Sandbox Code Playgroud)
并在 controller
$locationEx.skipReload().path("/category/" + $scope.model.id).replace();
Run Code Online (Sandbox Code Playgroud)
我想到的替换routeProvider用ui-router筑巢路线,但无法找到这ui-router.
是否有可能 - 做同样的事情angular-ui-router?
我为什么需要这个?让我用一个例子说明:
用于创建新类是路线/category/new
后clicking在SAVE我秀success-alert,我想改变路线/category/new,以/caterogy/23(23 -是存储在数据库新项目的ID)
我使用AngularJS v1.2.0-rc.2和ui-router v0.2.0.我想引荐的状态转移到另一种状态,所以我使用toParams的$state.go,像这样:
$state.go('toState', {referer: $state.current.name});
Run Code Online (Sandbox Code Playgroud)
根据文档,这应该填充$stateParams在toState控制器上,但它是undefined.我错过了什么?
我创建了一个插件来演示:
我希望能够转换到状态并使用ui-router传递任意对象.
我知道通常使用$ stateParams,但我相信这个值被插入到URL中,我不希望用户能够为这些数据添加书签.
我想做这样的事情.
$state.transitionTo('newState', {myObj: {foo: 'bar'}});
function myCtrl($stateParams) {
console.log($stateParams.myObj); // -> {foo: 'bar'}
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在不将值编码到URL的情况下执行此操作?