2014-11-17 58 views
2

我使用Restangular進行後臺調用與REST API的溝通,一切工作只要細如網址給我,就像下面的數據:如何在angularjs中獲得作爲URL一部分的ID?我使用Restangular

如果我打 http://mysite/responses/的迴應看起來像

[ 
    {"fname":"some guy", 
    "lname":"some name", 
    "dob":2091, 
    "job":"mgr", 
    "id":"100" 
    }, 
    {"fname":"another guy", 
    "lname":"anpther name", 
    "dob":1991, 
    "job":"worker", 
    "id":"101" 
    }, 
    {"fname":"someone", 
    "lname":"some name", 
    "dob":1997, 
    "job":"dev", 
    "id":"102" 
    }, 
    {"fname":"some guy2", 
    "lname":"some name", 
    "dob":2091, 
    "job":"sec", 
    "id":"103" 
    } 
] 

,一切工作正常

它被包裹在一個數組,我Restangular URL看起來像

RestangularProvider.setBaseUrl('http://mysite/responses/'); 
RestangularProvider.setRestangularFields({ id: 'id' }); 

,它工作一切優秀

現在我解構後端和API中返回以下格式

http://mysite/responses/100

{ 
    fname:"some guy", 
    lname:"some name", 
    dob:2091, 
    job:"mgr", 
    id:"100" 
} 

http://mysite/responses/101

{ 
    fname:"another guy", 
    lname:"another name", 
    dob:1991, 
    job:"sec", 
    id:"101" 
} 

http://mysite/responses/102

0123數據
{ 
    fname:"some name", 
    lname:"some person", 
    dob:1091, 
    job:"sec", 
    id:"102" 
} 

http://mysite/responses/103

{ 
    fname:"a guy", 
    lname:"person name", 
    dob:1998, 
    job:"dev", 
    id:"103" 
} 

現在,如果我打

http://mysite/responses/

我得到如下答覆

http://mysite/responses/100 
http://mysite/responses/101 
http://mysite/responses/102 
http://mysite/responses/103 
http://mysite/responses/104 

正如你看到的,ID是越來越附加到URL,我需要得到這個ID,進行Restangular調用並獲取數據。我怎樣才能循環這個多個http調用,獲取id並將其放入Angular中。我認爲我沒有正確構建Resturlar的BaseURl,因爲我不知道如何獲取id。 感謝您的幫助

+0

我不認爲我理解。你想要讓用戶導航到http:// mysite/responses /時,你的代碼會查詢其他5個端點? – NevilleS

+0

這就是當前後端設置的方式嗎?什麼是替代方案。 – Mike

+0

你知道它總是迴應100-104嗎?因爲在你說的問題中你需要「得到id並把它放在Angular中」......因爲如果你只是想循環5次重複調用,那很簡單...... – NevilleS

回答

0

你所尋找的是routeParams

https://docs.angularjs.org/api/ngRoute/service/ $ routeParams

這與路由一起使用:

https://docs.angularjs.org/api/ngRoute/service/ $路線

例如:

$routeProvider.when('/Book/:bookId', { 
    templateUrl: 'book.html', 
    controller: function($scope, $routeParams) { 
     console.log($routeParams.bookId); 
    }) 
}); 
+0

我無法在RestUrl的BaseUrl中訪問routeParams? – Mike

+0

你是否在使用路線? – MoLow

+0

是的,我正在使用路線。 – Mike

相關問題