Angular 如何使用控制器函数更改路由模板?

In Angular how to change the route template using a controller function?

第一次加载url时,需要显示初始模板。但是点击一个link后,我需要

  1. 获取它的 href 值(这是当前模板 url 加上一些额外的参数)
  2. 将带有参数的新 url 发送到服务器
  3. 获取新模板(服务器将发送带有新数据的新模板)
  4. 相应地更改视图(更新整个页面)

我已经完成了第一个任务。第 4 个任务是真正的问题。使用单击 link 时调用的函数更改路线模板(使用 ng-click)。我该怎么做?

要用新模板替换当前模板,基本上只需两行代码。即:

  1. 更新当前使用的模板$templateCache
  2. 重新加载当前路线。

它可能看起来像这样:

var content = '<h2>New content loaded previously</h2>';
var templateName = $route.current.templateUrl;

$templateCache.put(templateName, content);
$route.reload();

查看简单演示:http://plnkr.co/edit/V5AG0UXS3b8wBwxrz7qO?p=preview

获取当前模板的 URL:

$route.current.templateUrl

您可以尝试直接设置模板值(切勿测试)

$route.current.templateUrl = "http://myrul.tld";

您可以在 https://docs.angularjs.org/api/ngRoute/service/$route

查看文档