1

我想用 Async API 构建一个模态指令来打开模态。我在想的是一个工厂,它返回给我操作模态指令的 API 对象。使用 Angular-UI Bootstrap 0.6.0 我想要这样的东西:

Module.factory("ModalAPI", function ($modal) 
    var ModalAPI;

    ModalAPI.confirm = function (title, text, buttons) {
        // Set up a confirmation modal
        return $modal.open(options).result;
    };

    return ModalAPI;
});

到目前为止,一切都很好。现在要设置模态,我想:

Module.factory("ModalAPI", function ($modal) 
    var ModalAPI,
        Modal;

    Modal = {};

    ModalAPI.contents = function () {
        return Modal;
    }

    ModalAPI.confirm = function (title, text, buttons) {
        Modal.title = title;
        Modal.text = text;
        Modal.buttons = processButtons(buttons);

        return $modal.open(options).result;
    };

    return ModalAPI;
});
Module.directive("modal", function(ModalAPI) {
    return {
        restrict: "A",
        link: function (scope, elem, attrs) {
            scope.modal = ModalAPI.contents();
        },
        template: "<div class='modal-header'>" +
                  "    <h2>modal.title</h2>" +
                  "</div>" +
                  "<div class='modal-body'>" +
                  "    <h2>modal.text</h2>" +
                  "</div>" +
                  "<div class='modal-footer'>" +
                  "    <button ng-click='$close(button.result)' ng-repeat='button in buttons'>{{button.label}}</button>" +
                  "</div>"
    };
});

问题是如何设置Modal仅与指令共享对象而不与其他人共享对象的模式?

4

1 回答 1

0

指令定义对象允许您为指令定义控制器。从文档中

控制器 - 控制器构造函数。控制器在预链接阶段之前被实例化,并与其他指令共享(参见 require 属性)。这允许指令相互通信并增强彼此的行为。控制器是可注入的(并支持括号表示法),具有以下局部变量:

$scope - 与元素关联的当前范围

$element - 当前元素

$attrs - 元素的当前属性对象

$transclude- 预先绑定到正确的嵌入范围的嵌入链接函数:function(cloneLinkingFn)。

指令上的控制器的行为就像 ng-view 的控制器。我认为这正是您正在寻找的。

于 2013-09-19T02:02:23.550 回答