私はこの粗悪な URL 形式を持っています:
domain.com/config/someconfig/edit/2
ID 2 のレコードの内容を準備する準備が整ったフォームを開く場所。
どうすればURIから2を取得できますか?
可能な最も簡単な方法は、次のようなものです。
if($location._uriseg(4) && typeof $location._uriseg(4) === 'number') then...
angular.js にはこのようなものがありませんか?
私はこの粗悪な URL 形式を持っています:
domain.com/config/someconfig/edit/2
ID 2 のレコードの内容を準備する準備が整ったフォームを開く場所。
どうすればURIから2を取得できますか?
可能な最も簡単な方法は、次のようなものです。
if($location._uriseg(4) && typeof $location._uriseg(4) === 'number') then...
angular.js にはこのようなものがありませんか?
これは $routeProvider.when を介して設定された角度のあるルートですか? その場合は、$routeParams を使用して値を取得できます。何かのようなもの:
$routeProvider.when('/thing/:thingId', {
templateUrl: 'thing.html',
controller: ThingCntl
});
次に、コントローラーで $routeParams.thingId を使用して値にアクセスできます
angular のフィルターを作成して、そのメソッド (_uriseg) を使用できるようにしました。
app.filter('_uriseg', function($location) {
return function(segment) {
// Get URI and remove the domain base url global var
var query = $location.absUrl().replace(BASE_URL,"");
// To obj
var data = query.split("/");
// Return segment *segments are 1,2,3 keys are 0,1,2
if(data[segment-1]) {
return data[segment-1];
}
return false;
}
});
今私は呼び出すことができます:
$scope.email = $filter('_uriseg')(3);
したがって、このフィルタを使用すると、任意の URL セグメントの値を取得できます。
誰かがデフォルトのメソッドを共有したい場合は、angular.js に似たようなものがあると今でも信じています。
また、codeigniter フェローが URI からコントローラー アクションを取得できるように、codeigniter スタイルの別のフィルターを作成しました。
app.filter('getCImr', function($location) {
return function(controller) {
// Get URI and remove the domain base url global var
var query = $location.absUrl().replace(BASE_URL,"");
// To obj
var data = query.split("/");
// Remove CI controller
delete data[0];
var result = {};
// Map action and record ID/Whatever
result[data[1]] = data[2];
return result;
}
});
それで、あなたの codeigniter URI が次のようなものだとしましょう:
domain.com/controller/function/id
次のことができます。
$scope.id = $filter('getCImr')('controller')['function'];
取得するため:
console.log($scope.id); // id
とにかくありがとう。