asynchronous - 在 AngularJS 指令中使用异步配置

标签 asynchronous angularjs

我有一个指令,它查看配置以确定要使用的模板。它曾经运作良好;我有一个配置服务,它只返回一个带有配置值的对象,然后我做了这样的事情:

if (Config.Values.ReleaseVersion < 1.0) {
  template = 'partials/pagebeta.html';
}
else {
  template = 'partials/page.html';
}
templateUrl: template

最近出现了一个问题。我的配置服务必须从 json 文件获取值。现在,因为获取配置是异步的,所以我现在从配置服务传回一个 promise 。这在我的指令中给我带来了问题 - 我不能这样做:

var template;
Config.then(function(config) {
  if (config.Values.ReleaseVersion < 1.0) {
    template = 'partials/pagebeta.html';
  } 
  else {
    template = 'partials/page.html';
  }
});
templateUrl: template

如有任何建议,我们将不胜感激!

最佳答案

如果您的 templateUrl 取决于异步计算的值,您将无法再使用指令的 templateUrl 属性,并且您将不得不使用较低级别的 API,即 $http$compile

大致上,您需要做的(仅在链接函数中可能)是使用 $http 检索模板的内容(不要忘记涉及 $templateCache!)然后“手动”编译模板的内容。

听起来可能需要大量工作,但实际上非常简单。我建议查看 ngInclude 指令 sources使用此模式的地方。

关于asynchronous - 在 AngularJS 指令中使用异步配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504880/

相关文章:

angularjs - 如何异步引导 Angular 2 应用程序

jquery - 如何在JQuery中实现简单的异步查询

javascript - 解决数组推送的 promise - javascript

c++ - 使用 async_write 同时写入不同的套接字

javascript - 使用 Angular.js 拆分 &lt;input type ="text">

javascript - 没有 Bootstrap 的 AngularJS 工具提示?

angularjs - 从 mongodb 获取包含今天日期的项目列表

c - 是否可以显示异步IO的进度

java - 如何使用 Netty 异步发送多个 http 请求?

javascript - 成功登录后将用户数据从Nodejs服务器推送到Angular