在另一个控制器中包含控制器

我有一种情况,我有一个角度控制器,它基本上只是加载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

上一篇: include controller inside another controller

下一篇: GCC macro expansion to call another macro