如何在角度js中调用控制器功能

时间:2016-08-10 11:52:26

标签: angularjs

如何在getinfo()中成功使用employeecontroller函数调用函数crudApp.controller,以便我可以在单击提交按钮后立即获取更新表

var crudApp = angular.module('crudApp', []);
crudApp.controller("DbController", ['$scope', '$http', function ($scope, $http) {

    getInfo();
    function getInfo() {
        $http.post('select.php').success(function (data) {
            // Stored the returned data into scope
            $scope.details = data;
        });
    }

    $scope.deleteInfo = function (info) {
        $http.post('delete.php', {
            del_id: info
        }).success(function (result) {
            getInfo()
            console.log(result);
        });
    }
}]);

function employeecontroller($scope, $http) {
    $scope.insertData = function () {
        $http.post("insert.php", {
            'firstname': $scope.firstname,
            'lastname': $scope.lastname,
        }).success(function (data, status, headers, config) {
            console.log("Data Inserted Successfully");
        });
    }
}

3 个答案:

答案 0 :(得分:0)

在employeecontroller函数成功使用.injector()

调用getInfo

REF:AngularJS. How to call controller function from outside of controller component

 function employeecontroller($scope, $http) {
                                    $scope.insertData = function () {
                                        $http.post("insert.php",{
                                            'firstname': $scope.firstname,
                                            'lastname': $scope.lastname,
                                        }).success(function (data, status, headers, config) { 
                                            console.log("Data Inserted Successfully");
                                           angular.element(document.getElementById('yourControllerElementID')).injector().‌​getInfo('$rootScope');
                                        });
                                    }
                                }

答案 1 :(得分:0)

行。首先,我不知道你正在使用哪种角度版本,这可能会有所帮助。

其次,我认为您需要2个不同的控制器。每个控制器都有自己的$ scope。如果你想要共同的功能,你有两个选择:

1.(推荐)使用utils服务或类  2.在$ rootScope中声明它们。然后可以通过" $ rootScope.getInfo();"

在整个模块(crudApp)中访问它们。

PD。现在,您只声明了一个控制器。但我认为你想要改造2个不同的控制器。

答案 2 :(得分:-1)

理想情况下,这应该通过事件调度来完成。如果employeecontroller是crudApp的控制器(从你共享的代码看起来不是这样),那么它可以通过$ rootScope。$ broadcast和$ scope。$ on来完成。如果不是这样,可以通过调度javascript事件来实现。将在DbController中监听事件。