我有一个设置控制器,负责保存我的网络应用程序的设置。
这个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答案 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。