我有以下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/

10-11 13:08