javascript - 通过 promise 加载 angular 1.5 组件模板

标签 javascript angularjs angularjs-1.5

在 Angular 1.5 中,我想通过自定义 promise 加载模板。 我想运行的示例代码是

var module = angular.module("myApp", []);
module.component("component", {
template: ["$q", function ($q) {

    var defer = $q.defer();

    setTimeout(function () {
        defer.resolve("<p>Hello world</p>");
    }, 100)
    return defer.promise;
}],
controller: function () {

}
});

我想这样做的原因是从代理 iframe 加载模板。

如果有什么方法可以为 promise 提供我的自定义模板解析器就足够了。

最佳答案

我通过使用装饰器替换 Angular 的 $templateRequestService 解决了这个问题。

参见下面的代码示例:

module.config(["$provide", function ($provide) {

$provide.decorator("$templateRequest", [
    "$delegate", "$q", // DI specifications
    function ($delegate, $q) {

        // replace the delegate function 
        $delegate = function (tpl) {
            var defer = $q.defer();
            // convert the tpl from trustedvaluetoken to string
            if (typeof (tpl) !== "string" || !!$templateCache.get(tpl)) {
                tpl = $sce.getTrustedResourceUrl(tpl);
            }
            // make proxy call and resolve the promise;

            // Make an async call
            return defer.promise;
        }
        // return the modified delegate function
        return $delegate;
    }]);

}]);

关于javascript - 通过 promise 加载 angular 1.5 组件模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37992063/

相关文章:

javascript - 从带有 trim 空格和新行的字符串中获取主题标签

AngularJS 1.5.x $onChanges 不适用于单向绑定(bind)更改

javascript - ng-repeat 不更新 html

javascript - Angular : Open new tab without popup blocker

javascript - 为什么我的组件绑定(bind)在其 Controller 中未定义?

javascript - Angular 1.5,从 ng-repeat 外部调用组件函数?

javascript - Kineticjs 将元素添加到舞台

javascript - Emberjs linkTo 助手不加载模型

javascript - 通过ajax将关联PHP数组传递给javascript时保留其顺序

angularjs - 如何将 ui-routing 与 ionic 滑盒一起使用?