0

問題

私はdialog自分のアプリケーションで UI Bootstrap のサービスを使用しています。このサービスはモーダル ダイアログを作成し、outer で次のメソッドを使用してそれを行います$scope

$scope.showRouteEditDialog = function (template, route) {
    // argument `route` is not currently used

    var dialog = $dialog.dialog({
        backdrop: true,
        keyboard: false,
        backdropClick: true,
        templateUrl: template,
        controller: 'RouteController'
    });


    dialog.open().then(function(result) {
        alert(result); // This line is called when dialog is closed
    });
}

このメソッドは、後で次のマークアップを使用して部分ビューから呼び出されます

<a href="#" ng-click="showRouteEditDialog('Templates/Content/Timeline/Item/Editor.html', route)"><i class="halflings-icon edit"></i></a>

route私のダイアログは(routeメインモデル内のサブモデルです)の編集を処理するため、そのルートをダイアログに渡して、外部モデルについて何も知らなくても独自のモデルのように扱うようにしたいと思います。

この問題に対する私の最初の推測は、ルート引数をdialog変数に割り当て、dialog.route = route後で次のコードを使用してコントローラー内で使用することでした。

Application.controller('RouteController', ['$scope', 'dialog', function ($scope, dialog) {
    // `dialog` is our dialog and it is injected with injector
    doSomethingWith(dialog.route)
}]);

このアプローチは依存関係を作成し、角度のあるやり方のようには見えませんが

その目的のためにサービスを使用する必要があると言っているこの投稿も見つけましたが、この解決策はそのような小さな問題にはやり過ぎのようです。

質問

上記のシナリオを使用して、外側のコントローラーから内側のコントローラーに値を渡す角度のある方法は何ですか。

ありがとうございました

4

1 に答える 1

2

You can use "resolve" -

var dialog = $dialog.dialog({
  resolve: {route: function(){return "route"}}
});

and later you can inject the "route" value inside of your controller

.controller("SomeCtrl",function(route){

})
于 2013-06-28T08:38:07.223 に答える