我假设当您谈论隔离范围时,您正在谈论指令。
这是一个如何做到这一点的例子。
http://jsfiddle.net/rgaskill/PYhGb/
var app = angular.module('test',[]);
app.controller('TestCtrl', function ($scope) {
$scope.val = 'World';
});
app.factory('AlertFactory', function () {
return {
doWork: function(scope) {
scope.title = 'Fun';
//scope.title = scope.val; //notice val doesn't exist in this scope
}
};
});
app.controller('DirCtrl', function ($scope, AlertFactory) {
AlertFactory.doWork($scope);
});
app.directive('titleVal',function () {
return {
template: '<h1>Hello {{title}}</h1>',
restrict: 'E',
controller: 'DirCtrl',
scope: {
title: '='
},
link: function() {
}
};
});
基本上,将控制器附加到已定义隔离范围的指令。注入指令控制器的作用域将是一个隔离作用域。在指令控制器中,您可以注入您的 AlertFactory ,您可以将隔离范围传递给它。