控制器之间通信的正确方法是什么?
我目前正在使用一种可怕的软糖包括window:
function StockSubgroupCtrl($scope, $http) {
$scope.subgroups = [];
$scope.handleSubgroupsLoaded = function(data, status) {
$scope.subgroups = data;
}
$scope.fetch = function(prod_grp) {
$http.get('/api/stock/groups/' + prod_grp + '/subgroups/').success($scope.handleSubgroupsLoaded);
}
window.fetchStockSubgroups = $scope.fetch;
}
function StockGroupCtrl($scope, $http) {
...
$scope.select = function(prod_grp) {
$scope.selectedGroup = prod_grp;
window.fetchStockSubgroups(prod_grp);
}
}
Run Code Online (Sandbox Code Playgroud) 最近,我和一些同事正在讨论AngularJS服务是否应该有州.我们提出了一些支持和反对的论据,我希望得到关于这个主题的更多想法和反馈.在我的搜索中,我发现了这一点,但似乎没有提到任何明确的最佳实践.在无客户端的世界中,服务永远不应该保持状态,但我开始认为它可能是客户端可接受的,因为它是一个不同的问题.
服务持有状态的原因:
服务不成立的原因:
可能在"for services holding state"部分中解决#2的一种方法是在rootScope上设置包含应用程序当前状态的appState对象.然后将所有州聚集在一个位置,然后您只需在服务中提取所需的内容.我发现了这个并且想知道
我正在寻找一种可靠的方法来让所有控制器中的"当前用户ID"可用.使用:Firebase简单登录:电子邮件/密码验证
我的ida:我需要一个"工厂",我可以注入我的控制器,让"当前用户ID"始终可用.
我想出了这段代码:
app.factory('User', ['angularFire',
//Get Current UserID
function(angularFire){
console.log ('FACTORY: User');
var currentUser = {};
var ReturnStr = '';
var ref = new Firebase("https://myFIREBASE.firebaseio.com/");
var authClient = new FirebaseAuthClient(ref, function (err, user) {
if (err) {
ReturnStr = 'FACTORY: User Error: ' + err;
console.log (ReturnStr);
//var User = ReturnStr;
} else if (user) {
console.log ('FACTORY: User: Login successfully:');
console.log (user);
currentUser = user;
} else {
//console.log ('-----------User: Logged Out ---------------');
ReturnStr = 'FACTORY: Logged out: Redirect …Run Code Online (Sandbox Code Playgroud)