Javascript 使用angularJS以编程方式更改模板源代码

Javascript 使用angularJS以编程方式更改模板源代码,javascript,angularjs,Javascript,Angularjs,我有一段简单的代码,根据我在此处单击的按钮,用适当的模板替换ng include标记: 我想做的是用javascript函数而不是Angular的HTML helper标记复制ShowPage2内容按钮的相同行为。 关于上面链接的Plunker,我希望第三个按钮与第二个按钮完全相同,但此行为应在onClickHandler函数中执行,以代替警报。如果我理解正确,您希望从角度世界之外更改角度。您可以这样做: function onClickHandler() { var appElement

我有一段简单的代码,根据我在此处单击的按钮,用适当的模板替换ng include标记:

我想做的是用javascript函数而不是Angular的HTML helper标记复制ShowPage2内容按钮的相同行为。
关于上面链接的Plunker,我希望第三个按钮与第二个按钮完全相同,但此行为应在onClickHandler函数中执行,以代替警报。

如果我理解正确,您希望从角度世界之外更改角度。您可以这样做:

function onClickHandler() {
  var appElement = document.querySelector('[ng-app=plunker]');
  var appScope = angular.element(appElement).scope();
  appScope.template = 'page2';
  appScope.$apply();
}

我不知道你为什么想要这样,但有一种方法可以实现

JS

如果您使用的是jQuery,那么可以直接使用$main而不是angular.element。在angular.element中,我们只需要使用DOM元素。我们不能使用ID选择器或类选择器,因为它已被angular从jqlite中删除。

您的示例非常简单,如果我错了,请更正,但我想您在现实世界中尝试的是使用第三方js应用程序来更改该模板,是吗?如果是这样的话,请让我们知道,这样我们就可以从更角度来解决这个问题。
function onClickHandler() {
  var appElement = document.querySelector('[ng-app=plunker]');
  var appScope = angular.element(appElement).scope();
  appScope.template = 'page2';
  appScope.$apply();
}
function onClickHandler() {

  var ele = document.getElementById("main");
  angular.element(ele).scope().template='page1';
  angular.element(ele).scope().$apply();
}