在另一个控制器中包含控制器
我有一种情况,我有一个角度控制器,它基本上只是加载html模板,具体取决于点击事件。 但是,这些模板由自己的控制器管理。 这导致控制器在原始控制器内部 ,这看起来是错误的 :
<div ng-controller="WindowCtrl" id="focus-window">
<button ng-click="openProjects()">Show Projects</button>
<button ng-click="openTasks()">Show Tasks</button>
<div ng-include src="template.url"></div>
</div>
controllers.js
.controller('WindowCtrl', function ($scope) {
$scope.templates = [
{
name: 'tasks',
url: 'partials/_tasks.html'},
{
name: 'projects',
url: 'partials/_projects.html'}
];
$scope.template = $scope.templates[0];
$scope.openProjects = function() {
$scope.template = $scope.templates[1];
};
$scope.openTasks = function() {
$scope.template = $scope.templates[0];
};
});
_projects.html
<div ng-controller="ProjectsCtrl">
<h2>My Projects</h2>
...
</div>
_tasks.html
<div ng-controller="TasksCtrl">
<h2>My Tasks</h2>
...
</div>
我的问题是 - 什么是我想要做的最好的解决方案,而不会造成范围冲突?
任何帮助非常感谢。
所以,我其实认为你的方法是正确的。 我将其基于控制器的AngularJS文档(“Demo”部分显示了一个简单的嵌套控制器层次结构)。
此外,这与表单指令的工作方式非常相似。 它为表单本身创建一个范围,对整个表单评估$ pristine,$ dirty,$ valid和$ invalid。 如果所有子范围的计算结果均为true,那么这些值也只能为真(换句话说,如果所有输入都返回为$有效,那么表单只有$有效)。 这是通过嵌套的作用域层次结构完成的,所以如果Angular以基本方式进行,则应用程序可以以类似的方式进行操作。
链接地址: http://www.djcxy.com/p/76955.html