从父视图调用的子控制器中的函数

时间:2014-06-04 10:01:30

标签: angularjs angularjs-scope angularjs-controller

我有一个设置控制器,负责保存我的网络应用程序的设置。

这个SettingsController有一个简单的$ scope.saveSettings方法。设置控制器与settings.html相关联,其定义如下:

.config(['$locationProvider','$routeProvider', function ($locationProvider, $routeProvider) {

    $routeProvider.when('/widgets', { templateUrl: 'partials/widgets.html', controller: 'widgetsController'});
    $routeProvider.when('/settings', { templateUrl: 'partials/settings.html', controller:'settingsController' });
    $routeProvider.otherwise({redirectTo: '/widgets'});
}])

如果我想在settings.html之外设置一个“保存设置”按钮(例如在main.html中)  它们不会被调用,因为与主视图相关的主/父控制器对saveSettings()一无所知。

对于这样的事情可以做些什么?

我的main.html有  在路径路径为/ settings

时注入settings.html

1 个答案:

答案 0 :(得分:0)

你应该将saveSettings()放在一个服务中并注入你需要使用saveSettings()函数的所有控制器:

  //define a settingService
    angular.module('myApp').factory('settingsService', function() {  
        return {
            saveSettings: function() { //save settings logic }
        };
    });


function aCtrl($scope, settingsService) {
    settingsService.saveSettings(); // call save settings function that is inside the service
}

function settingsCtrl($scope, theService) {   
        settingsService.saveSettings(); // call save settings function that is inside the service
}

有关服务的详情,请阅读HERE