我试图让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变量上进行设置。