Dude! That worked. Thank you so much.
To be clear, in my html i have this
<a href="#!{{r.url}}" data-ng-bind-html="r.config.settings.content"></a>
And in my config i have
function getRoutes() {
var baseSiteUrlPath = '/app/';// $("base").first().attr("href");
return [
{
url: '/',
config: {
templateUrl: baseSiteUrlPath + 'dashboard/dashboard.html',
title: 'dashboard',
settings: {
nav: 1,
content: '<i class="fa fa-dashboard"></i> Dashboard'
}
}
}, {
url: '/admin',
config: {
title: 'admin',
templateUrl: baseSiteUrlPath + 'admin/admin.html',
settings: {
nav: 2,
content: '<i class="fa fa-lock"></i> Admin'
}
}
}
];
}
On Tue, Jan 27, 2015 at 6:26 PM, Nicholas Smith <[email protected]>
wrote:
> I think in your getRoutes javascript function the URLs should not contain
> the #.
>
> // Define the routes function getRoutes() {
>
> var baseSiteUrlPath = '/app/';
>
>
> return [
> {
> url: '/',
> config: {
>
> templateUrl: baseSiteUrlPath + 'dashboard/dashboard.html',
>
> title: 'dashboard',
> settings: {
> nav: 1,
> content: '<i class="fa fa-dashboard"></i> Dashboard'
> }
> }
> }, {
>
> url: '/admin',
> config: {
> title: 'admin',
> templateUrl: baseSiteUrlPath + 'admin/admin.html',
>
> settings: {
> nav: 2,
> content: '<i class="fa fa-lock"></i> Admin'
> }
> }
> }
> ];}
>
>
>
> But in your HTML the a href= will need to be "#/" and "#/admin". (Maybe
> #!/ and #!/admin for your case, I didn't use the '!' in my applications).
>
>
> On Tuesday, January 27, 2015 at 11:50:56 AM UTC-6, Brian Power wrote:
>
>> I tried that, but is not finding the routes.
>>
>> When I first go to the angular page with this url
>>
>> http://localhost:15258/Office/Index/73
>>
>> i get this in the address bar
>> http://localhost:15258/Office/Index/73/#!/
>>
>>
>> It shows the view as expected
>>
>> Changing to <a href="#/admin">Admin</a> results in a url of
>> http://localhost:15258/Office/Index/73/#/admin
>>
>> So better than before.
>>
>> But that route is not found. I tried <a href="#*!*/admin">Admin</a> ,
>> thats not found either. My route config looks like this.
>>
>> // Configure the routes and route resolvers
>> app.config(['$routeProvider','$locationProvider', 'routes',
>> routeConfigurator]);function routeConfigurator($routeProvider,
>> $locationProvider, routes) {
>>
>> $locationProvider.hashPrefix('!');
>>
>> routes.forEach(function (r) {
>> $routeProvider.when(r.url, r.config);
>> });
>> $routeProvider.otherwise({ redirectTo: '/' });
>> // $locationProvider.html5Mode(true);
>> }
>> // Define the routes function getRoutes() {
>>
>> var baseSiteUrlPath = '/app/';
>>
>> return [
>> {
>> url: '/',
>> config: {
>> templateUrl: baseSiteUrlPath + 'dashboard/dashboard.html',
>> title: 'dashboard',
>> settings: {
>> nav: 1,
>> content: '<i class="fa fa-dashboard"></i> Dashboard'
>> }
>> }
>> }, {
>> url: '#/admin',
>> config: {
>> title: 'admin',
>> templateUrl: baseSiteUrlPath + 'admin/admin.html',
>> settings: {
>> nav: 2,
>> content: '<i class="fa fa-lock"></i> Admin'
>> }
>> }
>> }
>> ];}
>>
>> Thanks again for your help Nicholas.
>>
>>
>>
>> On Tue, Jan 27, 2015 at 5:14 PM, Nicholas Smith <[email protected]>
>> wrote:
>>
>>> Your links within the HTML will need to contain the #, so they'll look
>>> like:
>>> <a href="#/">Dashboard</a>
>>> <a href="#/admin">Admin</a>
>>>
>>>
>>>
>>> On Tuesday, January 27, 2015 at 11:05:54 AM UTC-6, Brian Power wrote:
>>>>
>>>> "It sounds like you have a .NET page serving up your angular SPA app at
>>>> this url:
>>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>
>>>> Index/73/"
>>>>
>>>> Yes , thats correct. http://www.blah.com/Office/
>>>> <http://www.blah.com/Office/?officeid=52>Index/73/" is a .net cshtml page
>>>> with<html ng-app="app">. It then does a *<div
>>>> data-ng-include="'/app/layout/shell.html'"></div>*
>>>>
>>>> shell.html is the angular layout.
>>>>
>>>> "Any routes you define within that SPA app are relative to that. So if
>>>> you have a route define as "/admin" the URL for it would be
>>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>
>>>> Index/73/#!/admin"
>>>>
>>>> This not happening for me. Are you saying I can have a <a href="/">
>>>> dashboard</a> with in my angular layout, and it will know I really want <a
>>>> href="Office/ <http://www.blah.com/Office/?officeid=52>Index/73/#!/">
>>>> dashboard</a> ?
>>>>
>>>> I can live with #! in my url for sure.
>>>>
>>>>
>>>>
>>>> On Tue, Jan 27, 2015 at 4:49 PM, Nicholas Smith <[email protected]>
>>>> wrote:
>>>>
>>>>> It sounds like you have a .NET page serving up your angular SPA app at
>>>>> this url:
>>>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>
>>>>> Index/73/
>>>>>
>>>>> Any routes you define within that SPA app are relative to that. So if
>>>>> you have a route define as "/admin" the URL for it would be
>>>>> http://www.blah.com/Office/ <http://www.blah.com/Office/?officeid=52>
>>>>> Index/73/#!/admin
>>>>>
>>>>> The .NET side will get the request for "http://www.blah.com/Office/
>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/" and serve up
>>>>> whatever your .NET code generates for that URL. Presumably contains your
>>>>> html and javascript for your SPA app. Once the pages loads and angular
>>>>> runs, it examines the rest of the URL after the #! to determine which
>>>>> route
>>>>> to use. It will see "http://www.blah.com/Office/
>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/admin" and only
>>>>> use the "/admin" when matching against your route configs.
>>>>>
>>>>> Also I see your original post you actually want URLs like:
>>>>> http://www.blah.com/Office/52/staff
>>>>> <http://www.blah.com/Office/?officeid=52/staff>
>>>>> http://www.blah.com/Office/52/budgets
>>>>> <http://www.blah.com/Office/?officeid=52/budgets>
>>>>>
>>>>> If you don't want the #! in your URLs you'll need to look into html5
>>>>> mode
>>>>> see https://code.angularjs.org/1.3.9/docs/guide/$location
>>>>> I don't recommend going that route, it's extra complexity to setup
>>>>> within your Angular app, and on the .NET side to make it work. If you can
>>>>> live with having the # in your URLs, I'd stick with that for now.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tuesday, January 27, 2015 at 10:26:36 AM UTC-6, Brian Power wrote:
>>>>>>
>>>>>> Thanks for your reply Nicholas.
>>>>>>
>>>>>> How can my angular routes stay as they are the same? '/' points to
>>>>>> http://www.blah.com/
>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>
>>>>>> and
>>>>>> '/admin' points to http://www.blah.com/
>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>admin.
>>>>>> How do I tell angular "You start at /Office/Index/73/#/
>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>"
>>>>>> rather than '/' ? I think I'm misunderstanding something fundamental
>>>>>> here.
>>>>>>
>>>>>>
>>>>>> thanks
>>>>>> Brian
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tuesday, January 27, 2015 at 3:10:09 PM UTC, Nicholas Smith wrote:
>>>>>>>
>>>>>>> The routes "/" and "/admin" are relative to the URL serving your
>>>>>>> angular app. So if your app is at "http://www.blah.com/Office/In
>>>>>>> dex/73/", then your dashboard would be at "
>>>>>>> http://www.blah.com/Office/Index/73/#/
>>>>>>> <http://www.google.com/url?q=http%3A%2F%2Fwww.blah.com%2FOffice%2FIndex%2F73%2F%23%2F&sa=D&sntz=1&usg=AFQjCNGv33lTp_RF-rWvxxmKJ6hHJAV6EQ>"
>>>>>>> and your admin screen would be "http://www.blah.com/Office/In
>>>>>>> dex/73/#/admin". Your routes can stay as-is. As far as getting
>>>>>>> the "73" value into your angular app there are a few ways to do it. I'm
>>>>>>> not a .NET developer but I think whatever page or script is building
>>>>>>> the "
>>>>>>> http://www.blah.com/Office/Index/73" page could inject the "73" as
>>>>>>> a value into your page, something like:
>>>>>>>
>>>>>>> <script>var office_id=73;</script>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, January 27, 2015 at 6:41:22 AM UTC-6, Brian Power wrote:
>>>>>>>>
>>>>>>>> Hi Guys,
>>>>>>>>
>>>>>>>> I read the other threads on this,but I'm still confused.
>>>>>>>>
>>>>>>>> We are building a web site with .net mvc. We have one complex
>>>>>>>> entity, lets say it an "Office". An office has staff, resources,
>>>>>>>> budgets etc. A user can have many offices to manage. We have other
>>>>>>>> areas of
>>>>>>>> the system already built with just .Net. I have a .net view with a
>>>>>>>> list of offices. When the user clicks on one they're sent to the spa
>>>>>>>> for
>>>>>>>> that Office. The request goes to a .net controller called
>>>>>>>> OfficeController. The Index method takes an Id. I want its view to be
>>>>>>>> an
>>>>>>>> Angular spa.
>>>>>>>>
>>>>>>>> My route to the spa is http://www.blah.com/Office/
>>>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/
>>>>>>>>
>>>>>>>> My angular stuff is in a folder called 'app' at the root of the
>>>>>>>> website. Within the spa I have links to other views of the spa. I want
>>>>>>>> it
>>>>>>>> to have routes like this.
>>>>>>>>
>>>>>>>> http://www.blah.com/Office/52/staff
>>>>>>>> <http://www.blah.com/Office/?officeid=52/staff>
>>>>>>>> http://www.blah.com/Office/52/budgets
>>>>>>>> <http://www.blah.com/Office/?officeid=52/budgets>
>>>>>>>>
>>>>>>>> I'm using John Papa's HotTowel demo as a starting point for my spa.
>>>>>>>> In his routing config. He has this...
>>>>>>>>
>>>>>>>> return [
>>>>>>>> {
>>>>>>>> url: '/',
>>>>>>>> config: {
>>>>>>>> templateUrl: 'app/dashboard/dashboard.html',
>>>>>>>> title: 'dashboard',
>>>>>>>> settings: {
>>>>>>>> nav: 1,
>>>>>>>> content: '<i class="fa fa-dashboard"></i>
>>>>>>>> Dashboard'
>>>>>>>> }
>>>>>>>> }
>>>>>>>> }, {
>>>>>>>> url: '/admin',
>>>>>>>> config: {
>>>>>>>> title: 'admin',
>>>>>>>> templateUrl: app/admin/admin.html',
>>>>>>>> settings: {
>>>>>>>> nav: 2,
>>>>>>>> content: '<i class="fa fa-lock"></i> Admin'
>>>>>>>> }
>>>>>>>> }
>>>>>>>> }
>>>>>>>> ];
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> When I can access these views via the the browser with
>>>>>>>> http://www.blah.com/Office/
>>>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/ and
>>>>>>>> http://www.blah.com/Office/
>>>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/Admin . Do I need
>>>>>>>> to "pass in" something like "Office/
>>>>>>>> <http://www.blah.com/Office/?officeid=52>Index/73/#!/" to angular and
>>>>>>>> build dynamic routes?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks for reading
>>>>>>>>
>>>>>>>> Brian
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "AngularJS" group.
>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>> pic/angular/TuLtaVNh40A/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, 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/d/optout.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "AngularJS" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>> topic/angular/TuLtaVNh40A/unsubscribe.
>>> To unsubscribe from this group and all its topics, 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/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "AngularJS" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/angular/TuLtaVNh40A/unsubscribe.
> To unsubscribe from this group and all its topics, 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/d/optout.
>
--
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/d/optout.