尝试通过resolve对象从Angular UI Modal获取字符串

时间:2014-04-29 19:44:56

标签: angularjs angularjs-directive angularjs-scope angular-ui-bootstrap

我使用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

我觉得这与我正在寻找的答案非常接近,但我不认为我在这种情况下等待承诺解决,是吗?据我所知,我们的实现非常相似,但我再次没有使用全局变量,但它们是。或许我只是不明白这里到底发生了什么。当然,我没有足够的分数来问这个,所以我在这里......

1 个答案:

答案 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