Javascript AngularJS:使用控制器动态加载HTML

Javascript AngularJS:使用控制器动态加载HTML,javascript,html,angularjs,Javascript,Html,Angularjs,我是AngularJS的新手,我正在做一个小项目,了解事情的运作方式 基本上,我希望有一个单页应用程序,我可以动态地更改页面的一部分,以包括来自其他文件的html。另一个文件有一个控制器等。我希望url保持不变。我需要用变量名动态加载页面 现在,我可以从导入的模板中加载HTML,但是很多HTML被排除,所有的“ng”标记都消失了。我认为这意味着这个新页面找不到控制器,或者很多东西都被编译出来了。也许我没有按正确的顺序导入东西?我不知道。以下是我的基本布局: app.js var app = an

我是AngularJS的新手,我正在做一个小项目,了解事情的运作方式

基本上,我希望有一个单页应用程序,我可以动态地更改页面的一部分,以包括来自其他文件的html。另一个文件有一个控制器等。我希望url保持不变。我需要用变量名动态加载页面

现在,我可以从导入的模板中加载HTML,但是很多HTML被排除,所有的“ng”标记都消失了。我认为这意味着这个新页面找不到控制器,或者很多东西都被编译出来了。也许我没有按正确的顺序导入东西?我不知道。以下是我的基本布局:

app.js

var app = angular.module('myApp', []);
app.controller('Main', function($scope) {
    $scope.htmlContent = 'somepage.html';
    $scope.externalPage = 'otherpage';
    $scope.changePage = function(page) {
        $scope[page]();
    }
    $scope.otherpage = function() {
        $scope.htmlContent = 'otherpage.html';
    }
});

app.controller('InternalPage', function($scope) {
    alert('hello world');
    $scope.content = "This is not showing";
});
index.html

<div ng-controller="Main">
    <!-- This all works.  Clicking "Change Page" changes the 
         HTML referenced by the <div> tag -->

    <a ng-click="changePage(externalPage)">Change Page</a>
    <div ng-bind-html="htmlContent"></div>
</div>
<div ng-controller="InternalPage">
    <p>{{content}}</p>
</div>

换页
otherpage.html

<div ng-controller="Main">
    <!-- This all works.  Clicking "Change Page" changes the 
         HTML referenced by the <div> tag -->

    <a ng-click="changePage(externalPage)">Change Page</a>
    <div ng-bind-html="htmlContent"></div>
</div>
<div ng-controller="InternalPage">
    <p>{{content}}</p>
</div>

{{content}}


我尝试将javascript包含在html文件中,但没有成功。我也无法让ng include工作。

尝试查看ng include而不是ng bind html:

您无法编写此$scope[page]()。这在angular中是不允许的。你可以使用$scope[page](),这是我实现它的方式,函数正在被调用。如果我将控制器放在app.js中,导入的文件能够读取它吗?或者我必须将javascript放在包含的文件中吗?是的。ng include将文件的内容注入到包含它的任何位置,以便可以在那里访问文件中早期的任何导入。