看起來這個問題已經提出了幾次,但沒有正確的答案。我使用ajax(由於某些原因,不使用角路由選擇)加載模板(使用html和腳本)初始化爲div。Angularjs動態地添加控制器
的index.html(主)
<!DOCTYPE html>
<html ng-app="app" ng-controller="AppCtrl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Web</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
</head>
<body>
<div class="container body-content">
<div class="dynamic-content" >
<!-- Loading content Here -->
</div>
<button ng-click="loadTemplate()">Load Template</button>
</div>
<script>
angular.module('app', [])
.controller('AppCtrl', function ($scope) {
$scope.someData = {};
$scope.loadTemplate = function() {
....
//AJAX to get the templet.html
//and load it into .dynamic-content
//then applying scope();
}
});
</script>
</body>
</html>
template.html(模板)
<div ng-controller="TempCtrl">
<h2>About</h2>
<h3>{{total}}</h3>
<p>Testing the total</p>
<button ng-click="update()">Update</button>
</div>
<script>
console.log('begin')
angular.module('app')
.controller('TempCtrl', function ($scope) {
$scope.total = 0;
console.log('inside')
$scope.update = function() {
$scope.total += 1;
};
});
console.log('end')
</script>
當我按一下按鈕Load Template
它加載template.html
文件中的容器,但我會出錯
Error: [ng:areq] Argument 'TempCtrl' is not a function, got undefined
雖然它被添加到應用程序控制器。
我怎麼能動態地添加了控制器,並把它與動態HTML節點
工作DEMO這裏https://plnkr.co/edit/EAa9Md36hDzpQ1BgIQKg?p=preview
所以你加載AJAX嘗試向現有模塊添加新控制器,並在控制檯中顯示「開始」和「結束」,表明該腳本正在執行? – Dave
您是否嘗試過將腳本放在模板的HTML部分之前? – Dave
是的控制檯顯示'開始'和'結束',但不是'裏面' – Jag