这里有奇怪的错误。我有这样的表格:
<form name="newaccount" id="newaccount" ng-submit="doSubmit()">
<label>username</label>
<input name="username" type="text" required ng-model="username">
<span ui-toggle="username.length > 15">Too long!</span>
<label>name</label>
<input name="name" type="text" required ng-model="name">
<label>e-mail</label>
<input name="email" type="email" required ng-model="email" ui-validate>
<label>password</label>
<input name="password" type="password" required ng-model="password" ui-validate>
<div style="text-align: center;"><br>
<input type="submit"></div>
</form>
这个控制器:
$scope.username = "f";
$scope.password = "f";
$scope.email = "f";
$scope.name = "f";
$scope.doSubmit = function(){
//Transition to progress view
$scope.showLoginForm = false;
$scope.showCreateForm = false;
$scope.showLoading = true;
$scope.resultSuccess = false;
$scope.showResult = false;
$scope.loadingMessage = "Creating account...";
$scope.resultReason = "Success!";
//Send POST
$http({
method: 'POST',
url: "php/createaccount.php",
data: {
"username": $scope.username,
"password": $scope.password,
"name": $scope.name,
"email": $scope.email
}}
).success(function (data, status, headers, config) {
$scope.showLoading = false;
$scope.showResult = true;
$scope.resultSuccess = data === "success";
if($scope.resultSuccess){
$scope.resultReason = "Account created successfully!";
}else{
$scope.resultReason = data;
}
}).error(function (data, status, headers, config) {
$scope.showLoading = false;
$scope.showResult = true;
$scope.resultSuccess = false;
$scope.resultReason = data;
});
};
正如所料,&#34; f&#34;出现在每个字段中。但是,如果您更改这些字段然后提交表单,服务器将响应(在帖子数据上使用print_r()),表明后端ALWAYS收到的JSON将包含&#34; f&#34;作为每个字段的值,而不是更改的值。
实施例: 用户名&#34;测试&#34;等
{"username":"f","password":"f","name":"f","email":"f"}
因此,当我输入表单时,$ scope中的值不会因某些原因而更新。是什么给了什么?
答案 0 :(得分:1)
不要在$ http调用中分配单独的$ scope属性,而是在范围内使用“大对象”:$ scope.person = {username:'f',...}。然后你就可以发布那个对象了。
事实证明,这里的具体问题是angular不会将值写入范围变量,除非它们验证,在这种情况下,电子邮件没有正确验证。
答案 1 :(得分:0)
使用'ng-app'和'ng-controller'明确定义范围?
我在你的html中找不到这两个指令。也许你没有把它作为问题的一部分。
我期望的样本结构:http://angularjs.org/#todo-html