2013-06-28 85 views
0

問題

我使用UI引導的dialog服務在我的應用程序,該服務創建模態對話框,我這樣做,使用下面的方法對我的外表$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是主模型內的子模型),所以我想這條路線傳遞給對話框,這樣它會認爲是它自己的模式,無需瞭解外部模型什麼。

我對這個問題初始猜測是對的路線參數分配給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) 
}]); 

看起來像一個角度的做事方式

我也發現this post說我應該使用服務的目的,但它似乎像這個解決方案是這樣一個小問題矯枉過正。

問題

什麼是從外控制器值傳遞給一個內層一個上的場景上述的角的方式。

謝謝

回答

2

您可以使用 「解決」 -

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

,以後你可以注入你的控制器

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

}) 
+0

謝謝里面的 「路線」 的價值,它的工作,但它是如何工作的?我以前沒有使用「解決方案」。它是什麼? – Lu4

+0

「成員將得到解決,並傳遞給控制器​​當地人」 - 來自:https://github.com/angular-ui/bootstrap/blob/master/src/dialog/README.md 你也有它在ui路由器或$ route服務作爲將用例特定參數傳遞到通用控制器的一種方式 –

+0

謝謝,真正有用的帖子... – Lu4

相關問題