我使用Angular UI模态指令:http://angular-ui.github.io/bootstrap/
我试图通过resolve对象将一个字符串从我的模态open()函数传递给我的模态控制器。我觉得我做的是正确的事情,但不知怎的,它不起作用。
Modal open()函数:
$scope.showCommentModal = function () {
var modalInstance = $modal.open({
templateUrl: "templates/text-entry-modal.html",
controller: "TextEntryModalCtrl",
resolve: {
value: function () {
alert("VALUE");
return "Hello"
}
}
});
};
模态控制器:
.controller("TextEntryModalCtrl", ["$scope", "$modalInstance", function ($scope, $modalInstance, value) {
alert(value);
$scope.value = value;
$scope.cancel = function () {
$modalInstance.dismiss("cancel");
};
}]);
open函数中的警报每次都显示在控制器发出警报之前,所以它正在执行某事,但是当它到达控制器时,值是未定义的。 / p>
需要注意的是,这些控制器不是全局变量。上面链接中的示例使用的是这些,但这对我们来说不是最佳做法。
此外,我已阅读此帖:Angular-ui modal, sending data into modal controller from $http
我觉得这与我正在寻找的答案非常接近,但我不认为我在这种情况下等待承诺解决,是吗?据我所知,我们的实现非常相似,但我再次没有使用全局变量,但它们是。或许我只是不明白这里到底发生了什么。当然,我没有足够的分数来问这个,所以我在这里......
答案 0 :(得分:0)
查看模态控制器的第一行,看起来第二个参数的数组缺少"value",
作为数组中的第三个项目(就在数组中的最后一个函数之前)。它应该是:
.controller("TextEntryModalCtrl", ["$scope", "$modalInstance", "value", function ($scope, $modalInstance, value) {
这个特定的语法位使用controller()
方法使用Angular的内联注入注释向TextEntryModalCtrl
控制器添加构造函数,以明确指定控制器的依赖关系以及最终将消耗这些(注入的)依赖关系的构造函数。
虽然您的构造函数被编写为使用3个依赖项,但您只是显式列出了前2个依赖项,因此value
依赖项丢失了。
https://docs.angularjs.org/guide/controller#setting-up-the-initial-state-of-a-scope-object https://docs.angularjs.org/guide/di#inline-array-annotation