If you need nested views where parent view needs to maintain state after
going from /admin to /admin/user/cf23df2207d99a7, and you are going to
have a lot of these, or multiple nestings, then I suggest
ui-router: https://github.com/angular-ui/ui-router
Personally, it was more than I needed so instead of ng-view I use
ng-include and $watch for $routeChangeSuccess :
$routeProvider
.when('/admin', {
templateUrl: '/partials/admin.html'
})
.when('/admin/user/:user_hash', {
templateUrl: '/partials/admin.html' //notice it's same template because
will be handled
})
<body ng-controller="MainCtrl">
<header></header>
<div ng-include="currentTemplate"></div>
<footer></footer>
</body>
function MainCtrl($scope, $route){
//scope for main controller that lives for the lifetime of the page -
don't bloat it with stuff for all views
$scope.headerStuff = ...
$scope.footerStuff = ....
$scope. currentTemplate = '/partials/empty.html'; //temporary for first
load
$scope.$on('$routeChangeSuccess',function(){
/* here you catch the change without having ng-view force you in to
loading it's template and controller
I can make my own logic on whether to load a new template, or not and
let the controller in
admin template also catch the routechangesuccess and it can use
ng-include or ng-switch as it needs
- now we have a way to map routes and manage them more under our control
*/
if ( $scope. currentTemplate != $route.current.templateUrl){
$scope. currentTemplate = $route.current.templateUrl;
}
})
}
//admin partial
<div ng-controller="AdmingCtrl">
<div id =adminStuff"></div>
<div ng-include='innerTemplate'></div>
</div>
function AdminCtrl($scope, $routeParams){
$scope.adminStuff = ...
$scope. innerTemplate = 'parials/empty.html'; //for when nothing needs to
be here
$scope.$on('$routeChangeSuccess',function(){
$scope.user_hash = $routeParams.user_hash;
$scope. innerTemplate = 'admin.user.html' //now we load the user
template
})
}
Anyway, this might be too bit to digest as a newbie, but maybe it will
plant the seed to think outside the box.
On Wednesday, February 26, 2014 7:40:31 PM UTC-7, Andy Czerwonka wrote:
>
> Angular newb here.
>
> I just want to make sure I've got this right.
>
> 1. When I want addressable URL's I should use ng-view and load partials
> using the $routeProvider to bind local controllers to specific URL's.
> 2. State inside a particular controller should be managed using scope
> variables, i.e. don't try and build nested views.
>
> I'm trying to follow https://github.com/IgorMinar/foodme as a working
> example, but it's a fairly trivial example that doesn't go anywhere near a
> complex structure. For example, if I have an /admin endpoint and within
> that I wanted to do user admin and maybe some configuration of some kind, I
> would expect something like /admin/user and /admin/configuration as
> addressable endpoints. If I want something like that, is there a best
> practice? I was using ng-switch to get the right page once in the
> /adminpartial, but everything lives under
> /admin. If I want to take it further and get to
> /admin/user/cf23df2207d99a7, then I'm in trouble.
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/groups/opt_out.