ใช้เส้นทาง / สถานะที่แตกต่างกันสำหรับแต่ละโดเมนย่อยหรือชื่อโดเมนใน AngularJS / ui-router

แอปพลิเคชัน My Angular มีชื่อโดเมนและโดเมนย่อยที่แตกต่างกันมากมายที่ชี้ไป ฉันต้องการให้แต่ละคนมีสถานะที่แตกต่างกันในเส้นทางของฉัน ฉันจะทำอย่างไร?

ฉันขอยกตัวอย่าง:

domainname1.com
subdomain.domainname1.com
sub2.domainname1.com 

domain2.com
sub1.domain2.com

ทั้งหมดชี้ไปที่รูทแอปพลิเคชันของฉัน เส้นทาง / รัฐของฉันอาจมีลักษณะดังนี้:

    $stateProvider
            .state('Dom1Sub0', {
                url: '/',
                templateUrl: 'views/s0View.html',
                controller: 'domain1Controller as user'
            })
            .state('Dom1Sub1', {
                url: '/',
                templateUrl: 'views/s1View.html',
                controller: 'domain1Controller as user'
            })
            .state('Dom1Sub2', {
                url: '/',
                templateUrl: 'views/s2View.html',
                controller: 'domainController as user'
            })

            .state('Dom2Sub0', {
                url: '/',
                templateUrl: 'views/s0View.html',
                controller: 'domain2Controller as user'
            })
            .state('Dom1Sub1', {
                url: '/',
                templateUrl: 'views/s1View.html',
                controller: 'domain2Controller as user'
            })

ฉันจะเพิ่มคำสั่ง "if" สำหรับแต่ละรัฐโดยอิงตามโดเมนหรือโดเมนย่อยได้อย่างไร

จนถึงตอนนี้:

ฉันพบโค้ดบางส่วนที่นี่เพื่อแยกโดเมนย่อย:

app.factory('subdomain', ['$location', function ($location) { 
        var host = $location.host();
    if (host.indexOf('.') < 0) 
        return null;
    else
        return host.split('.')[0];
}]);

ดังนั้นฉันจึงทำเช่นเดียวกันกับโดเมนได้:

    app.factory('domain', ['$location', function ($location) {
var host = $location.host();
if (host.indexOf('.') < 0) 
    return host.split('.')[0];
else
    return host.split('.')[1];
}]);

และเพิ่มลงในคอนโทรลเลอร์ของฉัน:

    app.controller('SomeCtrl', ['$scope', 'subdomain', function ($scope, subdomain) {
 // use subdomain same as any other variable
}]);

แต่ฉันจะเปลี่ยนสถานะตามค่าของโดเมนและ / หรือโดเมนย่อยได้อย่างไร

ขอบคุณ


person Leon    schedule 31.01.2016    source แหล่งที่มา
comment
แค่คิดออกมาดังๆ แต่แทนที่จะมีสถานะที่แตกต่างกัน คุณอาจมีเพียงสถานะเดียว จากนั้นกำหนดพารามิเตอร์บางอย่าง เช่น domain และ subdomain สำหรับสถานะ จากนั้น คุณสามารถเลือกเทมเพลตที่เหมาะสมโดยใช้ฟังก์ชันเทมเพลต ดังที่แสดง ในคำตอบนี้ คุณสามารถทำสิ่งที่คล้ายกับคอนโทรลเลอร์ได้ โดยใช้ controllerProvider.   -  person Sunil D.    schedule 31.01.2016
comment
นี่คือความคิดเริ่มต้นของฉัน อย่างไรก็ตาม ฉันประสบปัญหาเมื่อต้องการใช้พารามิเตอร์สถานะเป็นส่วนหนึ่งของ URL ตัวอย่างเช่น URL แบบเต็มอาจเป็น: subdomain.domainname1.com/username1234 ซึ่งอนุญาตให้แอปพลิเคชันที่มีผู้เช่าหลายรายมีเพจที่ผู้ใช้กำหนดจำนวนเท่าใดก็ได้ สถานะของสิ่งนี้จะเป็น url: '/:usernameParam', ... โซลูชันนี้จะยังใช้งานได้ในกรณีนี้หรือไม่ ฉันจะลองในภายหลัง...   -  person Leon    schedule 01.02.2016
comment
บนพื้นผิวฉันคิดว่ามันสามารถทำงานได้ UI Router มีประสิทธิภาพมาก แต่เมื่อฉันตั้งใจจะทำอะไรบางอย่างที่ทะเยอทะยานเช่นนี้ ฉันมักจะต้องใช้ความพยายามเล็กน้อยเพื่อทำให้ถูกต้อง :)   -  person Sunil D.    schedule 01.02.2016
comment
@Leon หากคุณพบวิธีแก้ปัญหาโปรดโพสต์คำตอบ ฉันติดอยู่กับปัญหาเดียวกัน   -  person Omkar Gokhale    schedule 15.07.2016
comment
ไม่. นี่เป็นฟังก์ชันหนึ่งที่ฉันดูเหมือนจะไม่สามารถแก้ไขได้โดยใช้เราเตอร์เชิงมุม / UI ดูเหมือนเป็นไปได้แต่ฉันก็ทำไม่ได้   -  person Leon    schedule 17.07.2016