1

私は2つのルートを持っています:

app.config(['$routeProvider', '$locationProvider', function(
  $routeProvider, $locationProvider) {
    $routeProvider.
    when("/list/:class", {
        controller: "listController",
        templateUrl: "DatabaseObject",
        reloadOnSearch: true
    }).
    when("/edit/:class/:id?", {
        templateUrl: "editortemplate"
    }).
    otherwise("/custombrowsingstartpage");
}]);

どちらも正常に動作します!

私が望むのは、「/list/:class」ルートからモーダル ウィンドウ内のルートの 1 つの「editortemplate」をレンダリングできるようにすることです。

私の「listController」内には、モーダルオープニング機能があります。

    $scope.showEditorPanel = function (size, a, b) {
      //console.log($scope);
      var modalInstance = $modal.open({
      animation: true,
      //templateUrl: '#/edit/'+b+'/'+a,
      templateUrl: 'editortemplate',
      controller: 'editorController',
      size: size,
      backdrop: true,
      scope: $scope
    });

テンプレートはうまくレンダリングされますが、テンプレートに必要なクラス変数と id 変数を渡す方法がわかりません (ルートに示されているように)。

テンプレート URL の代わりに変数 (class== var b, id== var a) を使用してルートを定義しようとしましたが、うまくいきませんでした:

//templateUrl: '#/edit/'+b+'/'+a,
4

3 に答える 3

1

「解決」オブジェクトを追加すると、必要なものを送信できます。これは、 $modal でこれを行う「Angular」の方法だと思います。

$scope.showEditorPanel = function (size, a, b) {
  var modalInstance = $modal.open({
  animation: true,
  templateUrl: 'editortemplate',
  controller: 'editorController',
  size: size,
  backdrop: true,
  resolve: {
           scope: function () {
                            $scope.properties.class = a;
                            $scope.properties.id = b;
                            return $scope.properties;
                        }
           }
});
于 2015-09-25T14:28:09.990 に答える
1

モーダル ウィンドウにデータを渡すにresolveは、モーダル インスタンスのメソッドを使用する必要があります。ルーターの同じプロパティと同じように機能します。

$scope.showEditorPanel = function (size, a, b) {
  var modalInstance = $modal.open({
    ...
    resolve: {
      class_id: function () { return $scope.class_id }
    }
  });

次に、モーダル ウィンドウのコントローラーでそれを要求する必要があります。

function editorController ($modalInstance, $scope, class_id) {
  // use the class_id ...
  $scope.class_id = class_id;
}

これにより、モーダル コントローラーの明示的な要件の「class_id」が修正され、今後のトラブルシューティングに役立ちます。$scope を介して「秘密裏に」渡すこともできますが、これは良い考えではありません ($modal で $scope プロパティを断固として避けます!)。明示的なコードは良いコードです!

于 2015-09-25T14:34:31.600 に答える