我想在LoginController下调用Homecontroller。下面是两个控制器的代码:
//Login controller
app.controller('LoginController', function ($scope, $cookieStore) {
$cookieStore.put('email','test@gmail.com');
// need to call Homecontroller here
});
// Home controller
app.controller('HomeController', function ($scope, $cookieStore, $location) {
if ($cookieStore.get('email') != null) {
$scope.wecomeMessage = $cookieStore.get('email');
}
else
{
$scope.wecomeMessage = "";
}
});
答案 0 :(得分:0)
我认为你误解了角度控制器的责任。
如何使用angular docs中的控制器:
使用控制器:
设置$ scope对象的初始状态。
向$ scope对象添加行为。
请勿使用控制器:
- 操纵DOM - 控制器应仅包含业务逻辑。
- 将任何表示逻辑放入控制器会显着影响 它的可测试性。
- Angular对大多数情况和指令都有数据绑定 封装手动DOM操作。
- 格式输入 - 使用角度 而是表单控件。
- 滤镜输出 - 改为使用角度滤镜。
- 跨控制器共享代码或状态 - 改为使用角度服务。
- 管理其他组件的生命周期(例如,创建 服务实例)。
因此,如果您想创建一些可重用代码块,您只需创建一个角度服务,其中包含具有所需逻辑的函数。然后你可以将它注入两个控制器,它们将具有必要的功能。
示例:强>
app.controller('LoginController', function ($scope, $cookieStore, helperService) {
$cookieStore.put('email', 'test@gmail.com');
$scope.wecomeMessage = helperService.getMessage();
});
// Home controller
app.controller('HomeController', function ($scope, $cookieStore, $location, helperService) {
$scope.wecomeMessage = helperService.getMessage();
});
app.service('helperService', function ($cookieStore) {
this.getMessage = function () {
return $cookieStore.get('email') != null ? $cookieStore.get('email') : "";
};
});