javascript - 使用指令时 Angular 重新加载 Controller

标签 javascript angularjs angular-ui-router

我的用户界面路线有这样的状态:

        .state('projects', {
            abstract: true,
            url: "/?username&token",
            templateUrl: "projects/views/Projects.html",
            controller: 'ProjectController'
        })
       .state('projects.mine', {
            url: "mine",
            templateUrl: 'projects/views/ProjectsMine.html'
        })
        .state('projects.all', {
            url: "all",
            templateUrl: 'projects/views/ProjectsAll.html'
        })

我做了一个指令:

    app.directive('description', function(){
        return{
            restrict: 'E',
            templateUrl : 'projects/views/directives/ProjectDescription.html',
            controller:ProjectController
        }
    });

我为状态 templateUrls 制作了两个完全相同的文件,唯一的区别是所有模板都使用如下描述指令:

<description></description>

另一个使用 templateUrl 的内容作为描述指令(复制 1on1),当不使用该指令但 templateUrl 文件的内容时,不会发生重新加载。

一切正常,但是当我转到“all”路线时,ProjectController 会重新加载。 该指令如下所示:“

<table>
  <tr >
      <td><b>name</b> </td>
      <td>{{project.name}}</td>
  </tr>
  <tr >
      <td><b>owner</b> </td>
      <td>{{project.owner}}</td>
  </tr>
<table>

指令以 ng-repeat 添加(处于“all”状态):

 <div ng-repeat="project in project|filter:searchText">
     <description></description>
 </div>

链接到我的 html 中的状态:

    <a ui-sref=".mine()"><button>my projects</button></a>
    <a ui-sref=".all()"><button>all projects</button></a>

    <div ui-view></div>

另一个“我的”使用指令的内容并且不重新加载 Controller 。 当从“我的”转到“所有”时,当我从“我的”转到“所有”时,会发生重新加载, Controller 不会重新加载

如何保持一切不变但避免 Controller 重新加载?

最佳答案

删除

 controller:ProjectController 

修复了这个问题,使用controller:'controllerName'会导致为每个创建的指令创建一个 Controller 。

关于javascript - 使用指令时 Angular 重新加载 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866937/

相关文章:

javascript - 如何让软键盘在页面加载时自动显示?

javascript -\getting 附加在 JSON 响应中。我应该如何删除这个

javascript - Angular ui.router 设置祖先状态命名 View

angularjs - Angular-ui-router:ui-sref-active 和嵌套状态

angularjs - 在呈现任何 View 或激活 Controller 之前,在 ui 路由中进行条件解析

javascript - 在 alertifyjs 中设置标题和标签

javascript - 使用 Bower 发布 TypeScript 库

javascript - 使用 Javascript 发出 post 请求

angularjs - Angular $resource get 方法不起作用

javascript - Angularjs更新范围变量而不重复