我试图让AngularJS在回答后隐藏一个登录表单,
并将其替换为服务器发送的数据(目前为本地JSON)。

这是我的控制器:

app.controller("testController", ['$scope', '$http', function ($scope, $http) {
    var eventList = this,
        dataReceived;

    eventList.events = [];


    $scope.submitLogin = function ($scope, http) {

        var response = $http.get("../json/Login.json");
        response.success(function (data, $scope) {
            $scope.appState = {};
            $scope.appState.bool = false;
            if (data.success) {
                eventList.events = data.eventHead;
                $scope.appState.bool = true;

            } else {
                window.alert(data.ErroMsg);
            }
        });
        response.error(function (data) {
            window.alert("Error");
        });
    };
}]);


这是我的HTML:



<div class="login-page" ng-hide="appState.bool">
        <div class="form">
            <img src="images/magnum.jpg" class="spacerSpe">
            <form class="login-form">
                <input type="text" placeholder="Matricule" />
                <input type="password" placeholder="Annee de Naissance" />
                <button ng-click="submitLogin()" >Log In</button>
            </form>
        </div>
</div>

<div ng-show="appState.bool" align="center">...</div>


因此,一旦按下了提交按钮,登录页面应该会隐藏(目前还没有实际的身份验证,如果您按下该按钮,它就可以正常工作),但是由于某种原因,我收到了此错误消息,而角度却不承认我
$scope.appState.bool已更改。

确切的消息是


  ErrorNotification.js:125 ConsoleAgent:TypeError:无法在数字“ 200”上创建属性“ appState”

最佳答案

请阅读$ http的文档:https://docs.angularjs.org/api/ng/service/ $ http

您的语法是错误的,应该更新,但是我认为主要的问题是您正在“成功”回调中创建一个名为$ scope的新局部变量,并在那里设置了变量。您需要在常规$ scope变量上进行设置。

07-26 09:39