1

angular-ui ルーターを使用して、1 つのセグメントのルートをさまざまな動作に解決する必要があります。

たとえば、次のようにしてこれを行っています:

$stateProvider
    .state('parent', {
        url: '/:route'
        template: '<div ui-view/>'
        controller: ['$scope', '$state', '$stateParams', ($scope, $state, $stateParams)->

            # I get the type of route that the user is visiting checking server side and returning its type..
            switch typeOfRoute
                when "user"
                    $state.transitionTo('parent.user.profile')
                when "place"
                    $state.transitionTo('parent.place.page')
                else
                    alert("bad route")
        ]
        })
    .state('parent.user', {
        abstract: true
        template: '<div ui-view/>'
        })

    .state('parent.user.profile', {
        template: '<h1>This is a profile</h1>'
        controller: ['$scope', '$state', '$stateParams', ($scope, $state, $stateParams)->

            # Here happens all about the user
        ]})

    .state('parent.place', {
        abstract: true
        template: '<div ui-view/>'
        })

    .state('parent.place.page', {
        template: '<h1>This is a place</h1>'
        controller: ['$scope', '$state', '$stateParams', ($scope, $state, $stateParams)->

            # Here happens all about the place

        ]})

誰かが訪問した場合、上記の例を使用します。

/Johndoe -> ルートがユーザーであることを返し、parent.user.profile に遷移します /Newyork -> ルートが場所であることを返し、parent.place.page に遷移します

この方法を使用する際の問題は、/Johndoe/likes を解決するルートをコーディングすると、ブラウザーが再び /Johndoe に移動し、パラメーターの長さをチェックすることなどを考えていることですが、おそらく誰かが同様のことを行っている可能性があります。

誰かが似たようなものを作ろうとした?私はこの時点で立ち往生しています。

どうもありがとう!!

4

1 に答える 1

0

わかりました、誰かを助けることができれば、私がやったことを最後に投稿します。

上記のコードを次のコードに置き換えました。

$urlRouterProvider.when('/:route', ['$match', '$stateParams', 'urlService', '$state', ($match, $stateParams, urlService, $state)->

    if $match.route and $match.route.length > 0 # you can make more complex route checking here.

        # here transition to the desired type route resolved server side 
        switch typeOfRoute
           #the same for checking.. 
            when "user"
                $state.transitionTo('user.profile', $match, false)
            when "place"
                $state.transitionTo('place.page', $match, false)
    else
        return false    


$stateProvider
    .state('user', {
        abstract: true
        template: '<div ui-view/>'
        })

    .state('user.profile', {
        template: '<h1>This is a profile</h1>'
        controller: ['$scope', '$state', '$stateParams', ($scope, $state, $stateParams)->

            # Here happens all about the user
        ]})

    .state('place', {
        abstract: true
        template: '<div ui-view/>'
        })

    .state('place.page', {
        template: '<h1>This is a place</h1>'
        controller: ['$scope', '$state', '$stateParams', ($scope, $state, $stateParams)->

            # Here happens all about the place

        ]})
于 2013-10-30T11:50:40.170 に答える