Php 一个视图中的多个控制器AngularJS+Laravel

Php 一个视图中的多个控制器AngularJS+Laravel,php,angularjs,laravel,controller,Php,Angularjs,Laravel,Controller,我正在编写一个crud应用程序,我需要在一个视图中使用两个控制器,但我不知道如何使用 当用户按下AddColaborador按钮时,应用程序需要搜索Função寄存器,并在selectHtml函数中显示。一个Colaborado有一个Funcao 这是我的密码: 为了使用,我需要将控制器更改为funcoesController,然后返回colaboradoresController <!DOCTYPE html> <html lang="pt-br" ng-app="regi

我正在编写一个crud应用程序,我需要在一个视图中使用两个控制器,但我不知道如何使用

当用户按下AddColaborador按钮时,应用程序需要搜索Função寄存器,并在selectHtml函数中显示。一个Colaborado有一个Funcao

这是我的密码:

为了使用,我需要将控制器更改为funcoesController,然后返回colaboradoresController

<!DOCTYPE html>
<html lang="pt-br" ng-app="registrosGerais">
    <head>
        <title>Sistema Pronatec</title>

        <!-- Load Bootstrap CSS -->
        <link href="<?= asset('css/bootstrap.min.css') ?>" rel="stylesheet">
    </head>
    <body>
        <h2>Gerenciamento de Colaboradores</h2>
        <div ng-controller="colaboradoresController">
            <!-- Nest second controller -->
            <div ng-controller="funcoesController">
                <button id="btn-add" class="btn btn-primary btn-xs" ng-click="toggle('add', 0)">Novo Colaborador</button>

            <!-- Table-to-load-the-data Part -->
            <table class="table">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Nome</th>          
                        <th>Função</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="clb in tbcolaborador">
                        <td>{{clb.id}} </td>
                        <td>{{ clb.nome }}</td>
                        <td>{{ clb.funcao_id}}</td>

                        <td>
                            <button class="btn btn-default btn-xs btn-detail" ng-click="toggle('edit', clb.id)">Editar</button>
                            <button class="btn btn-danger btn-xs btn-delete"                                 ng-click="confirmDelete(clb.id)">Remover</button>
                            <button class="btn btn-info btn-xs btn-detail"                                 ng-click="addConta(clb.id)">Adicionar Conta Banco</button>
                        </td>
                    </tr>
                </tbody>
            </table>


            <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                            <h4 class="modal-title" id="myModalLabel">{{form_title}}</h4>
                        </div>
                        <div class="modal-body">
                            <form name="frmColaboradores" class="form-horizontal" novalidate="">

                                <div class="form-group error">
                                    <label for="inputNome" class="col-sm-3 control-label">Nome</label>
                                    <div class="col-sm-9">
                                        <input type="text" class="form-control has-error" id="nome" name="nome" placeholder="Nome completo" value="{{nome}}" ng-model="colaborador.nome" ng-required="true">
                                        <span class="help-inline" ng-show="frmColaboradores.nome.$invalid && frmColaboradores.nome.$touched">Nome é obrigatório</span>
                                    </div>
                                </div>


                                <div class="form-group error">
                                    <label for="inputFuncao" class="col-sm-3 control-label">Função</label>
                                    <div class="col-sm-9">
                                        <select>
                                            <option ng-repeat = "clb in tbfuncao" value "{{ clb.id }}"> {{ clb.nome }} </option>
                                        </select>
                                    </div>
                                </div>  

                            </form>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-primary"                                id="btn-save" ng-click="saveColaborador(modalstate, id)"                                ng-disabled="frmColaboradores.$invalid">Salvar</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Load Javascript Libraries (AngularJS, JQuery, Bootstrap) -->
    <script src="<?= asset('app/lib/angular/angular.js') ?>"></script>
    <script src="<?= asset('js/jquery.min.js') ?>"></script>
    <script src="<?= asset('js/bootstrap.min.js') ?>"></script>

    <!-- AngularJS Application Scripts -->
    <script src="<?= asset('app/app.js') ?>"></script>
    <script src="<?= asset('app/controllers/colaboradores.js') ?>"></script>
</body>

对不起,英语不好

角度可以嵌套控制器。因此,您可以将一个控制器嵌入到另一个控制器中。在嵌套控制器中,您可以访问任一控制器

<!DOCTYPE html>
<html lang="pt-br" ng-app="registrosGerais">
    <head>
        <title>Sistema Pronatec</title>

        <!-- Load Bootstrap CSS -->
        <link href="<?= asset('css/bootstrap.min.css') ?>" rel="stylesheet">
    </head>
    <body>
        <h2>Gerenciamento de Colaboradores</h2>
        <div ng-controller="colaboradoresController">
            <!-- Nest second controller -->
            <div ng-controller="funcoesController">
                <button id="btn-add" class="btn btn-primary btn-xs" ng-click="toggle('add', 0)">Novo Colaborador</button>

            <!-- Table-to-load-the-data Part -->
            <table class="table">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Nome</th>          
                        <th>Função</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="clb in tbcolaborador">
                        <td>{{clb.id}} </td>
                        <td>{{ clb.nome }}</td>
                        <td>{{ clb.funcao_id}}</td>

                        <td>
                            <button class="btn btn-default btn-xs btn-detail" ng-click="toggle('edit', clb.id)">Editar</button>
                            <button class="btn btn-danger btn-xs btn-delete"                                 ng-click="confirmDelete(clb.id)">Remover</button>
                            <button class="btn btn-info btn-xs btn-detail"                                 ng-click="addConta(clb.id)">Adicionar Conta Banco</button>
                        </td>
                    </tr>
                </tbody>
            </table>


            <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                            <h4 class="modal-title" id="myModalLabel">{{form_title}}</h4>
                        </div>
                        <div class="modal-body">
                            <form name="frmColaboradores" class="form-horizontal" novalidate="">

                                <div class="form-group error">
                                    <label for="inputNome" class="col-sm-3 control-label">Nome</label>
                                    <div class="col-sm-9">
                                        <input type="text" class="form-control has-error" id="nome" name="nome" placeholder="Nome completo" value="{{nome}}" ng-model="colaborador.nome" ng-required="true">
                                        <span class="help-inline" ng-show="frmColaboradores.nome.$invalid && frmColaboradores.nome.$touched">Nome é obrigatório</span>
                                    </div>
                                </div>


                                <div class="form-group error">
                                    <label for="inputFuncao" class="col-sm-3 control-label">Função</label>
                                    <div class="col-sm-9">
                                        <select>
                                            <option ng-repeat = "clb in tbfuncao" value "{{ clb.id }}"> {{ clb.nome }} </option>
                                        </select>
                                    </div>
                                </div>  

                            </form>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-primary"                                id="btn-save" ng-click="saveColaborador(modalstate, id)"                                ng-disabled="frmColaboradores.$invalid">Salvar</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Load Javascript Libraries (AngularJS, JQuery, Bootstrap) -->
    <script src="<?= asset('app/lib/angular/angular.js') ?>"></script>
    <script src="<?= asset('js/jquery.min.js') ?>"></script>
    <script src="<?= asset('js/bootstrap.min.js') ?>"></script>

    <!-- AngularJS Application Scripts -->
    <script src="<?= asset('app/app.js') ?>"></script>
    <script src="<?= asset('app/controllers/colaboradores.js') ?>"></script>
</body>

不应从同一视图访问两个控制器。当一个人在一个控制器中更改内容并开始注意到意外地方的崩溃时,这种交叉依赖很可能会让你发疯

您的Laravel控制器可以将所有需要的数据传递给视图,包括作为附加数组变量的查找数据。这是最简单的方法


Laravel有许多不同的方法将附加数据传递给视图。除了直接变量引用之外,您还可以在Laravel 5.2中创建服务提供者或将其注入视图中。如果您需要在多个位置使用相同的参考数据以保持代码干燥,您可能希望选择这种解决方案。

只需使用app.controller创建两个控制器即可。。。。然后将每个控制器的ng控制器放在视图的任何元素上,您希望将其作为控制器范围边界。对不起,我是新使用angularjs的,我不知道如何做到这一点。我应该把app.controller放在哪里?听起来你需要学习一些angular教程,就像我遇到了这个错误一样:angular.js:13550错误:[ng:areq]参数“funcoesController”不是函数,没有定义以下是完整的代码:你需要在视图中包含包含你的控制器的脚本库。我想是的