2017-07-26 71 views
-1

這是我的配置:如何定義裏面常見的狀態網址參數爲每一個孩子的狀態

 .state('index.oz', { 
     abstract: true, 
     url: '/oz', 
     views: { 
      '[email protected]': { 
       templateUrl: "Views/oz/oz.html", 
       controller: 'ozController' 
      } 
     } 
    }) 
    .state('index.iz.a', { 
     url: '/a/:id', 
     params: { 
      id: { 
       value: null, 
       squash:true 
      } 
     }, 
     views: { 
      'ozTypeView': { 
       templateUrl: "Views/oz/a.html", 
       controller: "ozaController" 
      } 
     } 
    }) 
    .state('index.oz.b', { 
     url: '/b/:id', 
     params: { 
      id: { 
       value: null, 
       squash:true 
      } 
     }, 
     views: { 
      'ozTypeView': { 
       templateUrl: "Views/oz/ozb.html", 
       controller: 'ozbController' 
      } 
     } 
    }); 

我想要的網址是:

/盎司/年

/盎司/ B

/oz/a/45

/oz/b/12

我怎麼能在每個狀態寫使URL中的每個子狀態,這樣我就不必下面的一段代碼FO:

 params: { 
      id: { 
       value: null, 
       squash:true 
      } 
     } 

更多spedific,可不知何故,我把這段代碼裏面父抽象狀態,或者甚至可以在父狀態中定義參數id,但保留上面提到的我想要的url?基本上,我會有幾個孩子的狀態,我不希望每個州都重複相同的參數代碼。

回答

0

我想直接你不能,但可以減少代碼重複這樣的:

function stateWithId(name, cfg) { 
    cfg.url += '/:id'; 
    if (!cfg.params) { 
    cfg.params = {}; 
    } 
    cfg.params.id = { 
       value: null, 
       squash:true 
    }; 
    $stateProvider.state(name, cfg); 
} 

stateWithId('index.iz.a', { 
     url: '/a', 
     views: { 
      'ozTypeView': { 
       templateUrl: "Views/oz/a.html", 
       controller: "ozaController" 
      } 
     } 
    }); 
stateWithId('index.iz.b', { 
     url: '/b' 
}); 
相關問題