我在解决$ http.post问题时遇到了问题:
app.controller('editPageController', function($scope, $routeParams, $http) {
$scope.page = $routeParams.pageid;
// get page data from server
$http.get('/pages/' + $scope.page).
success(function(data, status, headers, config) {
$scope.Name = data[0].name;
$scope.Content = data[0].content;
$scope.Location = data[0].location;
}).
error(function(data, status, headers, config) {
alert("Can't get the page from the server");
});
// save page data on the server
$scope.saveEditPage = function() {
var postOBject = {Name: $scope.Name, Content: $scope.Content, Location: $scope.Location};
$http.post('/pages/' + $scope.page + '/edit', postObject).
success(function(data, status, headers, config) {
alert("success");
}).
error(function(data, status, headers, config) {
alert("Can't edit the page on the server");
});
};
});
模板代码:
<script type="text/ng-template" id="editPage.html">
<h1>Edit page:</h1>
<form ng-submit="saveEditPage()">
<p>Name:</p>
<input type="text" ng-model="Name" value="{{Name}}">
<p>Content:</p>
<textarea ng-model="Content">{{Content}}</textarea>
<p>Location:</p>
<input type="text" ng-model="Location" value="{{Location}}">
<p><input type="submit" value="Save"> <input type="button" value="Cancel" ng-click="$back()"></p>
</form>
不幸的是$ http.post不会触发。我尝试在$ scope附近包装post调用。$ apply,它也不起作用。
我该如何解决这个问题?
由于
编辑:修复
答案 0 :(得分:1)
JavaScript变量名称区分大小写。您已声明postOBject
,但您正在传递postObject
。
ReferenceError:未定义postObject
如果我纠正错字,它就像我预期的那样工作。
BTW我建议使用IDE进行静态分析 - 它会立即通知您未定义的变量。此外,Firebug或Chrome DevTools javascript控制台几乎是javascript开发所必需的。