2016-01-26 71 views
0

所以我想要一個子菜單,改變子視圖的狀態,我失敗了。

於是成立了下面的函數調用$ state.go

$scope.stateGo = function (state) { 
    console.log("Loadting state " + state) 
    $state.go(state); 
} 

我可以正確的(或者是什麼,我認爲是正確的州名)被稱爲

在控制檯上看到

Loadting狀態board.stat

然而,什麼都沒有,似乎與實際路由器發生。如果我改變它,那麼父母的狀態。它確實有效。例如,如果我將它設置爲登錄,它就可以工作。看起來

包含UI的意見的文件如下:

<div ui-view="topmenu"> 
    </div> 
</div> 
<div id="mainView"> 

    <div ui-view="mainView"> 
    </div> 
    <div style="height: 100px;"> </div> 
</div> 
<div class="col-md-offset-3 footer navbar-fixed-bottom" id="adView"> 
    <div ui-view="adView"> 
    </div> 
</div> 

狀態配置:

.state('board', { 
     url: "/view/board", 
     views: { 
      topmenu: {templateUrl: "views/partials/menu-board"}, 
      mainView: {templateUrl: "views/partials/welcome"}, 
      adView: {templateUrl: "views/partials/amazon-banner"} 
     }, 
     //controller: 'testCtrl' 
    }) 
    .state('board.stat', { 
     url: "/stat", 
     views: { 
      topmenu: {templateUrl: "views/partials/menu-board"}, 
      mainView: {templateUrl: "views/partials/stat"}, 
      adView: {templateUrl: "views/partials/amazon-banner"} 
     } 
    }) 

我失去了一些東西,應該以$ state.go(」呼叫board.stat')讓ui-router將stat加載到mainView中?如果是這樣,任何想法爲什麼不是?

=======================編輯=================== OK,想我可能是做錯了,但不能確定如何... 改爲使用UI的HREF

<a ui-sref="board.stat" ui-sref-active="active" class="btn btn-xlarge" ><button class="btn btn-primary btn-circle btn-xl"><i class="fa fa-bar-chart fa-1x"></i><br><h6>Stats</h6></button></a> 
<a ui-sref="board.quickbet" ui-sref-active="active" class="btn btn-xlarge" ><button class="btn btn-primary btn-circle btn-xl"><i class="fa fa-plus fa-1x"></i><br><h6>Quick bet</h6></button></a> 

所以相同的佈局正如前面的按鈕,但它似乎是兩個孩子的狀態被加載,只有當我進入父母國家。

$rootScope.$on('$stateChangeError', 
    function(event, toState, toParams, fromState, fromParams, error){ 
     console.log("State error: " + error); 
    }) 
$rootScope.$on('$viewContentLoading', 
    function(event, viewConfig){ 
     // Access to all the view config properties. 
     // and one special property 'targetView' 
     // viewConfig.targetView 
     console.log("State event: " + viewConfig) 
    }); 

但我得到的唯一輸出是:

2狀態事件:MAINVIEW @ 2狀態事件

所以我使用以下兩種功能增加了對國家一些調試: adView @

但是當我按下按鈕什麼都沒有發生時

+0

可能是你應該叫'stateGo(「board.stat」)'而不是'ui-sref =「board.stat」' – styopdev

+0

試過了,好像它也這樣做。找到了一個解決思路 – vrghost

回答

0

認爲我解決了它。 那麼,我確實解決了它,但我對它的工作原理感到驚訝。 所以問題似乎是,我認爲孩子的狀態會重新加載UI視圖的孔集,它不會,並且試圖這樣做似乎什麼都不做。如果這是正確的解釋或預期的行爲,我不知道,但這是對我有用的。

加載所有三個視圖(名爲topmenu,mainView和adView)的父狀態(自動發生)。 添加新的用戶界面視圖(在我的情況下,裝上MAINVIEW stats.ejs)

This is your stats and bets 
<ui-view></ui-view> 

最後一件事是隻更新您wan't屏幕的部分,所以不MAINVIEW,但針對新統計中的ui視圖。EJS

.state('board.stat', { 
     templateUrl: "views/partials/stat" 
    }) 

和它的作品,如果有與DOM或事做只是不能肯定,但它在我的情況下工作