我有一个非常奇怪的问题,因为我无法在这里复制实际的生产代码,或者至少不是很多,你可能无法帮助我,但我还是会尝试
以下是我正在做的事情的简化示例: http://plnkr.co/edit/7IjX4jV9sb2Fb6NpmzUZ?p=preview
angular.module("hello", [
"ui.bootstrap",
"ui.bootstrap.tpls",
]);
angular.module("hello").controller("helloCtrl", function($scope, $modal){
$scope.openModal = function(){
var modalInstance = $modal.open({
templateUrl: 'modal.tpl.html',
controller: 'modalCtrl',
resolve: {
obj1: function(){
return {name:"obj1"};
},
obj2: function(){
return {name:"obj2"};
}
}
});
};
});
angular.module("hello").controller("modalCtrl", function($scope, obj1, obj2){
$scope.obj1 = obj1;
$scope.obj2 = obj2;
})
所以我打开一个模态并解析要在模态控制器中使用的对象。这个例子有效,但在实际代码中 obj1将被解析为obj2,而obj2将是未定义的。当它们来到控制器时它们也已经错了,而不仅仅是在连接之后他们的范围。
在实际项目中,我也使用ui-router,但模式不是它自己的状态,在这种状态或父状态下,这些名称都没有解决。
如果有人对可能导致此类行为的事情有任何想法或猜测,我真的很感激听到他们。
修改
以下是生产代码中最相关的部分:
模态开启控制器:
angular.module('cmt').controller('createClusterModalCtrl', function ($scope, $modal, clusterSvc) {
$scope.openCreateClusterModal = function () {
var modalInstance = $modal.open({
templateUrl: '..path to template..',
controller: 'clusterCreateCtrl',
windowClass: 'cmt-xl-modal-window',
resolve: {
initTab: 0,
validationSettings: function(){
//return something simple for debug
return {name:"validation"};
},
cluster: function(){
//return something simple for debug
return {name: "cluster"};
}
}
});
};
});
模态控制器:
angular.module('cmt').controller('clusterCreateCtrl', function ($scope, $modalInstance, clusterSvc, toastr, initTab, validationSettings, cluster) {
console.log("validation:");
console.log(validationSettings); //will print name: "cluster"
console.log("cluster:");
console.log(cluster); //will print undefined
......
答案 0 :(得分:1)
发现错误:
解决" initTab:0"导致它获得下一个定义的功能,所以堡垒。我不得不将其更改为返回0的函数。
有人会解释为什么你不能解决除功能之外的其他问题吗?