Bronzato
Bronzato

Reputation: 9362

Navigation logic seems to work only one time (durandal)

I am working on an ASP.NET MVC project with the durandal template.

I am facing a problem and need some help to find the more elegant solution. I have a header bar (blue) and a sidebar (grey). Both contains an element (link) to create a new transport. In the screenshot below this is showed with the bullets 1 & 2.

enter image description here

My idea was to proceed like this:

Here is the code:

var activate = function () {
    var id = datacontext.createTransport();
    var url = '#/detailTransport/' + id;
    router.navigateTo(url);
    return true;
};

So this newTransport view is not really showed, I used this to have a link allowing me to create the transport before showing it.

My problem is that it works only the first time and furthermore it seems to break the router logic someway.

I noticed that if I move the code from the activate to a button inside the view, I don't have problem anymore.

So for resume: I need to execute some code (create an entity) before navigating to the detail of this entity. My attempt (explained above) does not seems to work.

Any idea?

Upvotes: 1

Views: 729

Answers (1)

John Papa
John Papa

Reputation: 22338

The first click should be a method in the viewmodel, not a route to activate and then redirect. Its likely confused on what you want. Navigatng in an activate is not std practice. Just make the first click bind to a method in the root vm. Then navigate.

Upvotes: 2

Related Questions