1

私はこの粗悪な URL 形式を持っています:

domain.com/config/someconfig/edit/2

ID 2 のレコードの内容を準備する準備が整ったフォームを開く場所。

どうすればURIから2を取得できますか?

可能な最も簡単な方法は、次のようなものです。

if($location._uriseg(4) && typeof $location._uriseg(4) === 'number') then...

angular.js にはこのようなものがありませんか?

4

3 に答える 3

5

これは $routeProvider.when を介して設定された角度のあるルートですか? その場合は、$routeParams を使用して値を取得できます。何かのようなもの:

$routeProvider.when('/thing/:thingId', {
    templateUrl: 'thing.html',
    controller: ThingCntl
});

次に、コントローラーで $routeParams.thingId を使用して値にアクセスできます

于 2013-08-21T20:56:39.800 に答える
4

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

とにかくありがとう。

于 2013-08-21T22:56:03.823 に答える