如何在AngularJS中只执行一次控制器功能?

时间:2013-07-23 17:11:25

标签: javascript angularjs

我有一个在某些html中引用的控制器。并且html在某些事件上发生变化,因此控制器功能代码会多次执行 问题是我有一个代码的和平,只需要执行一次 这是控制器:

angular.module("someModule", [dependencies])
.controller("leftBoardController", function ($scope, someService) {
   (function createFilter(dataService) {
    // here I'm loading all the data on which I want to operate after
            // this code should execute only once
    })(TempEmployeeService);
}

但每次html更改时都会执行 这是控制器的插入方式:

<section ng-controller="TreeMapController"
                 ng-class="{ 'main-container-single': zoomed }"
                 class="minContainer main-container">

问题:
1)如何使控制器功能只执行一次?
2)或者有没有办法可以编写只执行一次的代码和平?

1 个答案:

答案 0 :(得分:3)

将“运行一次”代码放入service,然后返回承诺。

将该服务注入您的控制器。

有关服务创建然后返回承诺的示例,然后控制器使用该承诺,请参阅Should services expose their asynchronicity?