我有以下HTML
<html ng-app="app" ng-csp="">
<body ng-controller="MainController" capture ng-class="view">
<div id="wrap" ng-switch="view">
<div id="login" ng-switch-when="login" ng-controller="SignInController">
my login code
</div>
<div id="project" ng-switch-when="project" ng-controller="ProjectController">
my login code
</div>
</div>
</body>
</html>
我的Angular代码是
var app = angular.module("app", []);
app.controller("MainController", ["$scope", function(t) {
/* check session if exist or not if not show login*/
t.view='login';
}]),app.controller("SignInController", ["$scope","$http", function(t,$http) {
t.signIn = function() {
$http({
url: "/login/",
data: { email: t.user.email,password:t.user.password },
method: 'POST',
}).success(function (data) {
console.log(data);
//want to show project div
t.$emit("view", "project");
}).error(function(err){
t.error = "Invalid Login";
})
};
}]),app.controller("ProjectController", ["$scope", function(t) {
}]);
现在,我的ng-swicth不会为成功而烦恼。
编辑:
这是朋克链接http://plnkr.co/edit/I8EEFM8gdplUmNaZoYc6
当我单击登录按钮时,我想显示项目开关。
有什么建议么
谢谢
最佳答案
问题是$ scope在控制器之间不共享。首先只有一个Controller,所以$ scope可以按预期共享。
将您的ExampleController更改为此:
var app = angular.module("switchExample", []);
app.controller("ExampleController", ["$scope", function($scope) {
$scope.selection ="settings";
$scope.signIn = function() {
alert("click");
$scope.selection ="project";
}
}]);
...并删除其他控制器,并且在单击“登录”时在HTML中对未使用的控制器的引用将显示“你好”
关于javascript - 带有父子 Controller 的Angular中的ng-switch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27941460/