通过承诺加载角1.5组件模板



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

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加载模板。

如果有任何方法可以提供我的自定义模板解析器以使承诺也足够了。

我通过使用装饰器替换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;
    }]);
}]);

相关内容

  • 没有找到相关文章

最新更新