2017-07-23 4 views
0

übereinstimmen ich die Seite mit verschiedener HTML-Seite mit AngularJS $window neu geladen werden soll, die Documation sagt:

Seite neu laden Navigation Die $ Location Service ermöglicht es Ihnen, nur die URL zu ändern ; Sie können die Seite nicht erneut laden. Wenn Sie die URL ändern und die Seite neu laden oder zu einer anderen Seite navigieren müssen, verwenden Sie eine niedrigere API, $ window.location.href.

So stelle ich die loaction auf die Seite $window.location.href = '/transaction';

und der passenden Route auf config Block:

app.config(function($routeProvider) { 
    $routeProvider 
    .when('/transaction', { 
     templateUrl : 'JavaScript/directives/modelHTML/Transaction.html', 
     controller : 'endProcessModelController' 
    }); 
}); 

Aber instrad von Transaction.html Seite bekomme ich Fehler 404: SRVE0190E: File not found: /transaction mit der Route mydomain.com/UI/transaction.

BTW - templateUrl url funktioniert gut in anderen Ort wie UImodel, so dass das Problem die Navigation ist, denke ich.

+0

Siehe stackoverflow-Link: [angularjs-how-can-i-do-a-redirect-mit-einer-ganzen-Seite-laden] (https://stackoverflow.com/questions/16002984/angularjs-how- can-i-do-a-redirect-mit-einer-ganzen-Seite-laden) – IftekharDani

Antwort

1

Legen Sie den Standort auf die Seite $window.location.href = '#/transaction'; fest. '#' Angabe Speicherort die Startseite, die normalerweise index.html ist. so wird der Link sein index.html#/transaction .Seit seine eine Seite app

i in der Config denken Sie

'/UI/transaction' instead of `/transaction` 

und in den Link do $window.location.href = '#/UI/transaction'

+0

Funktioniert nicht - "#! #% 2Ftransaction". –

+0

inklusive angular-ui-route? – henrybbosa

+0

Es funktioniert für mich immer tun Sie etwas falsch? – henrybbosa

0

Versuchen Sie, diese

$location.path($window.location.origin +'/transaction');

Und wenn Sie glauben, dass alle Routen nach dem Ursprung etwas mehr haben, können Sie eine <base href="..."> einstellen und sagen Sie, wo Sie die restliche Menge an Text für die Route verwenden können.

Wenn Sie die Seite mit your_origin/transaction umleiten, wird Ihr Browser eine Anfrage an den Server /transaction stellen, den der Server nicht verstehen wird und 404 wird kommen. Aber die Route ist clientseitig (browser) routing, also wenn Sie routen, um /abc zu routen, interpretiert Ihr JavaScript-Code das und ruft die entsprechenden Operationen auf (möglicherweise ein anderer Aufruf zum Server für die HTML-Vorlage oder einige Datenabhängigkeiten) Instanziieren des Controllers und Anhängen zur Ansicht). Also sollte der Moment, in dem Sie versuchen, Ihren JavaScript-Code zu routen, geladen werden.

Entweder Sie gehen für einen UI-Router, wo die Route nach # kommt und dies ermöglicht dem Browser nach dem Text von() zu spielen und nicht neu zu laden.

Oder, machen Sie Ihren Server so, Wenn eine nicht identifizierte Anfrage kommt, sollten Sie die Basis (Index) Seite zurückgeben, so dass es alle Skripte laden wird und dass js den Rest erledigen wird. (Aber offensichtlich werden Sie alle vorhandenen Daten in diesem Zustand verlieren)

0

Ist die mydomain.com/UI/transaction Adresse korrekt (Sie verwenden HTML5-Modus)?

Tritt das Problem auf, wenn Sie versuchen, direkt in mydomain.com/UI/transaction einzugeben?

Wenn ja, ist das Problem falsche Serverkonfiguration (z. B. .htaccess-Datei).