假设我有一个预定义的模块/控制器,它将苹果设置为绿色。
var _core = angular.module('_core', []);
_core.controller('mainController', function($scope, $controller, $http) {
$scope.apple = 'green';
});
我可以将苹果放在控制器外面吗?像。的东西。
_core.mainController.apple
这可能吗?我还需要使用外部插件设置变量,抱歉我是一个完整的角度菜鸟,它有点令人生畏。
答案 0 :(得分:1)
如果您希望在控制器外部访问该值,则可以将其存储在$rootScope
而不是$scope
中,并且可以直接使用$ rootScope中存储的可注入的值。所以代码变成了:
var _core = angular.module('_core', []);
_core.controller('mainController', function($scope, $controller, $http, $rootScope) {
$rootScope.apple = 'green';
});
现在在其他地方说工厂,你可以用它作为:
var _core1 = angular.module('_core1', []);
_core1.factory('someFactory', function($scope, $rootScope, $http) {
var fruit = $rootScope.apple;
//variable fruit now contains green
});
答案 1 :(得分:0)
您可以使用factory来设置控制器外的任何模块。
var App = angular.module('app', []);
App.factory('messages', function () {
var messages = {};
messages.list = [];
messages.add = function (someString) {
messages.list.push(someString);
};
messages.get = function() {
};
messages.clearList = function () {
messages.list.length = 0;
}
return messages;
});
您可以将此服务方法调用到您的控制器中。
App.Controller('myController',['$scope', 'messages', function(scope, messages) {
messages.add('Hello');
var myListy = messages.get();
}]);