gpt4 book ai didi

javascript - AngularJS - ngClick 不起作用/getAll() 函数未定义

转载 作者:行者123 更新时间:2023-12-01 03:41:59 24 4
gpt4 key购买 nike

考虑到我是 Angular 的新手,这让我度过了一段艰难的时光。我一直在尝试不同的方法和代码

所以我有一个简单的 View ,通过 WEBapi 从数据库获取/添加数据。

3个问题:

1/为什么IE不传递数据到这里查看?2/考虑到 CHROME 提交不起作用,我做错了什么?3/使其在两种浏览器上都能工作的最佳方法是什么?

我不知道出了什么问题。 Chrome 控制台未发现错误,但 ngclick 未提交表单。

enter image description here

另一方面,IE 不显示列表中的数据并在控制台中显示错误。

enter image description here

就 WEBapi 而言,它被认为是有效的(通过浏览器和 fiddler 进行了测试)。

index.html

@{    Layout = null; }
<!DOCTYPE html>
<html lang="pl">
<head>
<meta name="viewport" content="width=device-width" />
<title>MobilePostService Client Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/Scripts/angular.min.js")
@Scripts.Render("~/Scripts/angular-route.min.js")
@Scripts.Render("~/Scripts/angular-resource.min.js")
@Scripts.Render("~/Scripts/App/module.js")
@Scripts.Render("~/Scripts/App/controller.js")
@Scripts.Render("~/Scripts/App/service.js")



<style>
table, tr, td, th {
border: 1px solid #ccc;
padding: 10px;
margin: 10px;
}
</style>
</head>



<body ng-app="APIModule" ng-controller="APIController">
<div class="row">
<div class="col-md-7">
<table>
<tr>
<th>NAME</th>
<th>CITY</th>
<th>STREET</th>
<th>POSTAL CODE</th>
<th>PHONE NR</th>
<th>EMAIL</th>
<th>REGISTRATION DATE</th>




</tr>
<tbody data-ng-repeat="par in parcel">
<tr>
<td>{{par.Name}}</td>
<td>{{par.City}}</td>
<td>{{par.Street}}</td>
<td>{{par.PostalCode}}</td>
<td>{{par.Phone}}</td>
<td>{{par.Email}}</td>
<td>{{par.RegistrationDate}}</td>
</tr>
</tbody>
</table>
@*<br /> <input type="button" ng-click="/new" value="Nowa paczka" />*@
@*<a href="/">NOWA PACZKA</a>*@
</div>
<div class="col-md-4">
<form ng-submit="addParcel()">
<table>
<tr> <td>Name</td> <td colspan=2><input type="text" ng-model="Name" /></td> </tr>
<tr> <td>City</td> <td colspan=2><input type="text" ng-model="City" /></td> </tr>
<tr> <td>Street</td> <td colspan=2><input type="text" ng-model="Street" /></td> </tr>
<tr> <td>PostalCode</td> <td colspan=2><input type="text" ng-model="PostalCode" /></td> </tr>
<tr> <td>Phone</td> <td colspan=2><input type="text" ng-model="Phone" /></td> </tr>
<tr> <td>Email</td> <td colspan=2><input type="text" ng-model="Email" /></td> </tr>
<!--<tr> <td>RegistrationDate</td> <td colspan=2><input type="text" ng-model="parcel.RegistrationDate" /></td> </tr>-->
@*<tr> <td>Submit</td> <td colspan=2><input type="click" id="submit" value="Submit"/></td> </tr>*@

</table>
<input type="submit" id="submit" value="Submit">
</form>



</div>
</div>




</body>
</html>

module.js(将其他 .js 中的所有代码推送到此处)

var app;
(function () {
app = angular.module("APIModule", []);

app.service("APIService", function ($http) {

this.getParcels = function () {


//nalezt zmienic urlBase na biezacy z wyszukiwarki
var urlBase = 'http://localhost:1797/api';
return $http.get(urlBase + '/webapi');
}

this.saveParcel = function (par) {
var urlBase = 'http://localhost:1797/api';
return $http.post(urlBase + '/webapi', par);
}
});
app.controller("APIController", function ($scope, APIService) {


getAll();

$scope.getAll = function () {
var servCall = APIService.getParcels();

servCall.then(function (d) {
$scope.parcel = d.data;
});
};

$scope.addParcel = function () {

var parcel = {
Name: $scope.Name,
PostalCode: $scope.PostalCode,
City: $scope.City,
Phone: $scope.Phone,
Email: $scope.Email,
Street: $scope.Street,
RegistrationDate: new Date()
};

var saveParcel = APIService.saveParcel(parcel);

saveParcel.then(function (d, $scope) {
//tutaj zwracam
$scope.getAll();
});
};


});

})();

最佳答案

getAll 肯定是未定义的。您从 Controller 调用它,但不添加 $scope 前缀。因此,您尝试在不存在的全局命名空间中调用名为 getAll 的函数。改为这样做:

getAll();

$scope.getAll = getAll;
function getAll() {
...
}

这样您就可以使用或不使用 $scope 前缀来调用它。

这也是错误的:

var saveParcel = APIService.saveParcel(parcel);

saveParcel.then(function (d, $scope) {
//tutaj zwracam
$scope.getAll();
});

没有理由将 $scope 作为回调参数之一。通过这样做,您将覆盖 Controller 的 $scope 变量。由于此回调参数没有方法getAll,因此您将再次收到未定义的错误。您实际上也不需要 d 变量。那么为什么要包括它呢?应该是这样的:

var saveParcel = APIService.saveParcel(parcel);

saveParcel.then(function () {
//tutaj zwracam
$scope.getAll();
});

关于javascript - AngularJS - ngClick 不起作用/getAll() 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com