我有两条路线:
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");
}]);
他们都工作正常!
我想要的是能够渲染" editortemplate"一个模态窗口中的一个路由来自" / list /:class"路由。
在我的" 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变量(如路线所示)。
我尝试用变量定义路由(class == var b,id == var a)而不是模板url但没有运气:
//templateUrl: '#/edit/'+b+'/'+a,
答案 0 :(得分:1)
如果您添加'resolve'对象,您可以发送您想要的内容,我相信这是使用$ modal执行此操作的“Angular”方式:
body
答案 1 :(得分: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属性!)。显式代码是很好的代码!
答案 2 :(得分:0)
我只需将预期变量定义为$ routParams:
$scope.showEditorPanel = function (size, a, b) {
//console.log($scope);
$routeParams.class=b;
$routeParams.id=a;
var modalInstance = $modal.open({
animation: true,
//templateUrl: '#/edit/TissueSample/'+a,
templateUrl: 'editortemplate',
controller: 'editorController',
size: size,
backdrop: true,
scope: $scope
});