我有一个 promise SharedData,它也返回一个变量service .template。该值是mytemplate,用于构建我想要传递给templateUrl指令的URL,但没有成功。

app.directive('getLayout', function(SharedData) {

var buildUrl= '';

SharedData.then(function(service) {
    buildUrl = service.template + '/layouts/home.html';
    console.log(buildUrl); // return mytemplate/layouts/home.html which is the URL I want to use as templateUrl
});

return {
    restrict: 'A',
    link: function(scope, element, attrs) {...},
    templateUrl: buildUrl
}
});

感谢您的帮助!

最佳答案

我使用$templateRequest解决了我的问题

app.directive('getLayout', function($templateRequest, SharedData) {

return {

    restrict: 'A',

    link: function(scope, element, attrs) {

        SharedData.then(function(service) {

            myTemplate = $templateRequest(service.template + '/layouts/home.html');

            Promise.resolve(myTemplate).then(function(value) {
                element.html(value);
            }, function(value) {
                // not called
            });
        });
      }
    };
});

这是一个Plunker

希望这会对某些人有所帮助:)并感谢@Matthew Green

关于javascript - 在指令中使用promise用于动态templateUrl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30106775/

10-12 15:14