Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 在Angular.js中从另一个控制器调用一个控制器_Javascript_Angularjs - Fatal编程技术网

Javascript 在Angular.js中从另一个控制器调用一个控制器

Javascript 在Angular.js中从另一个控制器调用一个控制器,javascript,angularjs,Javascript,Angularjs,我很难理解一些基本知识。我有两个控制器: <form ng-controller="NewList" id="form" ng-submit="submit()"> <input name="title" ng-model="formData.title" placeholder="{{placeholders.title}}" /> <button type="submit">Generate</button> <p

我很难理解一些基本知识。我有两个控制器:

<form ng-controller="NewList" id="form" ng-submit="submit()">
    <input name="title" ng-model="formData.title" placeholder="{{placeholders.title}}" />
    <button type="submit">Generate</button>
    <p ng-show="loading == 1">Loading...</p>
    <p ng-show="loading == 2">Response: {{response}}</p>
</form>

<div id="lists" ng-controller="GetLists">
    <ul>
        <li ng-show="loading">Loading...</li>
        <li class="list" ng-repeat="list in lists">
            <b>{{list.id}}</b> : {{list.title}}
        </li>
    </ul>

</div>

我试图实现的是,在提交表单时,刷新列表。也就是说,当
.success()
点击
NewList
时,调用
GetList
并使其再次发生。我如何做到这一点?

有什么原因让你觉得需要多个兄弟控制器而不是一个顶级控制器吗?没有,我只是还在努力解决这个问题(来自jQuery,因此需要一个重大的认知变化)。但我也觉得这在其他场景中可能有用?我看不到在这种场景中它会有用的场景(除非它是可重用的指令,但这是不同的)。两个同级控制器(和作用域)只能通过事件($broadcast and all)或共享服务进行通信。我明白了,听起来一个控制器绝对是一个更简单、更好的总体选择。如果我发布一个答案,我将无法在2天内接受我自己的答案,所以如果你能将这两个合并成一个,然后发布为一个答案,这样我就可以立即接受它,那就太好了!正如Simon所说,您可以使用两个控制器之间共享的服务。有时当控制器开始变大时,我会这样做,我会尝试拆分它们。
function NewList($scope, $http) {
    $scope.formData = { };
    $scope.placeholders = { "title" : "List title" };
    $scope.loading = 0;
    $scope.submit = function() {
        $scope.loading = 1;
        $http.post(window.apiBase + 'lists/create', this.formData)
            .success(function(response) {
                $scope.response = response;
                $scope.loading = 2;
            });
    }
}
function GetLists($scope, $http) {
    $scope.loading = true;
    $http.get(window.apiBase + 'lists/all').success(function(response) {
        $scope.lists = response.lists;
        $scope.loading = false
    });
}