Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs使用同一控制器具有多个视图,并且只运行一次控制器?_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript Angularjs使用同一控制器具有多个视图,并且只运行一次控制器?

Javascript Angularjs使用同一控制器具有多个视图,并且只运行一次控制器?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,现在我有两个独立的视图,我希望能够在一个控制器中控制它们 然而,目前,控制器运行了两次。是否可以将多个视图连接到同一个控制器,但控制器只运行一次 我知道我可能已经建立了一个工厂来共享$scope数据,但目标是不收集两次数据 .state('cloud', { url: '/cloud', views: { 'main': { templateUrl: 'main.html', controller: 'cloud' }, 'second': {

现在我有两个独立的视图,我希望能够在一个控制器中控制它们

然而,目前,控制器运行了两次。是否可以将多个视图连接到同一个控制器,但控制器只运行一次

我知道我可能已经建立了一个工厂来共享$scope数据,但目标是不收集两次数据

.state('cloud', {
    url: '/cloud',
    views: { 
        'main': { templateUrl: 'main.html', controller: 'cloud' },
        'second': { templateUrl: 'second.html', controller: 'cloud' }
    }
})

控制器get运行两次,因为在“云”状态中定义了两个视图,并且两个视图具有相同的控制器

因此,当两个视图都加载时,控制器调用两次


但是,如果要调用控制器,则必须为两个视图定义单独的控制器。

或者使用每个控制器调用的服务(并在服务中缓存请求/数据)。或者在公共祖先元素上创建uber控制器(不推荐)