0

以下のコードでは、リダイレクトは機能しません。私console.log()は正常に動作しますが、URL は変わりません。言うまでもなく、私はその理由について混乱しています。これがアプリケーションの別のセクションであるように URL を変更しましたが、うまく機能します。

angular.module('workstation.process.approval', [
        /* Dependencies */
        'workstation.services'
    ]).

    config(['$routeProvider', function($routeProvider) {
        /* URL mappings */
        $routeProvider.
            when('/approval', {templateUrl: 'partials/loading.htm',   controller: 'ApprovalCtrl'}).
            when('/approval/dashboard', {templateUrl: 'partials/approval/dashboard.htm',   controller: 'ApprovalCtrl'})
    }]).

    controller('ApprovalCtrl', ['$scope', '$cookieStore', 'WorkflowProcessService', 'socketUrl', '$location', function ($scope, $cookieStore, WorkflowProcessService, socketUrl, $location) {
        var socket = portal.open(socketUrl+'/socket/workstation/approval');
        socket.on({
            open: function () {
                this.send('getDashboard', {
                    workstationUuid: $cookieStore.get('workstationUuid')
                }, function(r) {
                    $scope.dashboard = r;
                    console.log('swap-path', r);
                    $location.path('/approval/dashboard'); //NOT WORKING
                });
            },
            close: function (reason) {
                console.log(reason);
            }
        });
    }]);
4

2 に答える 2

1

パスを変更した後、 $scope.$apply() を追加してみてください。コールバックのソケットは Angular の外部で呼び出されるため、Angular にダイジェスト サイクルを実行して変更を通知する必要がある場合があります。– Mark Rajcok 5 月 14 日 21:18

それは私のために働きます

于 2013-07-01T09:04:16.323 に答える
-1

window.location() はあなたのニーズに合っていると思います。

依存関係として$windowを追加するだけです

よろしく

于 2013-05-14T22:54:47.737 に答える