2014-08-28 68 views
1

我在ui-router中有一個'並行狀態'設置,允許url和狀態確定DOM的兩個不同部分(左側和右側)。右邊總是'酒吧',左邊是巴茲和蝙蝠。有一個抽象的父狀態,它決定了通過project_id顯示哪個項目。更改父狀態/ project_id將更改baz,bat和bar的內容。代碼在下面,並且工作。ui-router和angularjs中的並行狀態 - 防止重新加載

問題是,當狀態從project.baz - > project.bat轉換時,'bar'視圖重新初始化(例如指令重新運行鏈接函數),這會導致一些醜陋。

問題:當狀態從project.baz - > project.bat改變時,是否有辦法阻止'bar'視圖被重新初始化?當然,它應該在它的父狀態(即project_id)改變時重新初始化。

感謝

$stateProvider 
.state('project', { 
     abstract: true, 
     url: "/qux/:project_id", 
     views: { 
      "left": { 
       templateUrl: 'foo.html', 
       controller: 'FooController' 
      }, 
      "right": { 
       templateUrl: 'bar.html', 
       controller: 'BarController' 
      } 
     } 
    }) 

    .state('project.baz', { 
     url: "/baz", 
     views: { 
      "": { 
       templateUrl: 'baz.html', 
       controller: 'BazController' 
      }, 
      "right": { 
       templateUrl: 'bar.html', 
       controller: 'BarController', 

      } 
     } 
    }) 

    .state('project.bat', { 
     url: '/bat', 
     views: { 
      "": { 
       templateUrl: 'bat.html', 
       controller: 'BatController' 
      }, 
      "right": { 
       templateUrl: 'bar.html', 
       controller: 'BarController' 
      } 
     } 
    }) 
+0

看看ui-router-extras提供的粘性狀態(並行狀態)和深度狀態重定向功能http://christopherthielen.github.io/ui-router-extras/#/home – Martin 2014-08-28 19:57:51

+0

謝謝。看起來像粘性狀態是我需要的。當我下一次檢修代碼時,我會給出一個結論。現在,爲了穩定的緣故,我不會。你知道目前ui-router-extras有多穩定嗎? – tom 2014-08-28 22:29:44

回答

1

我無法重現您所描述的問題:http://plnkr.co/edit/krpCu6HokH365ukisPHu?p=preview

這可能是不必要的對孩子的看法指定的"right"看法,如果它是不超過一個不同父母國家的意見:

$stateProvider 
    .state('project', { 
    abstract: true, 
    url: "/qux/:project_id", 
    views: { 
     "left": { 
     templateUrl: 'foo.html', 
     controller: 'FooController' 
     }, 
     "right": { 
     templateUrl: 'bar.html', 
     controller: 'BarController' 
     } 
    } 
    }) 
    .state('project.baz', { 
    url: "/baz", 
    templateUrl: 'baz.html', 
    controller: 'BazController' 
    }) 
    .state('project.bat', { 
    url: '/bat', 
    templateUrl: 'bat.html', 
    controller: 'BatController' 
    }); 

但是,即使代碼逐字從您的問題複製,我是una重現問題。

+0

感謝potatosalad。我會用可重現的問題製作一個plinkr,然後在這裏更新。 – tom 2014-08-28 22:25:13