每当点击提交按钮时,我都试图在页面上添加1。已经从数据库计算了"total"
(表字段名称)值,因此当单击该按钮时,应该添加一个值。当您单击提交按钮时,记录会嵌套在每一行上,它应该将1添加到当前值
问题是我无法在javascript中绑定数据库值(total
)以使其显示在页面上。
如果这样,页面上没有任何值
$http.get('http://localhost/marv/feeds.php').success(function(data){
console.log(data);
$scope.feeds=data;
}
$scope.total=(data.total);
$scope.lovepic=function() {
event.preventDefault();
$scope.total++;
但是这样的时候
$http.get('http://localhost/marv/feeds.php').success(function(data){
console.log(data);
$scope.feeds=data;
}
$scope.total=0;
$scope.lovepic=function() {
event.preventDefault();
$scope.love_total++;
零(0
)出现在页面上,但每行都有自己的唯一值,这就是为什么我希望零值替换为名为total
的数据库表中的字段
HTML
<div ng-controller="feedsctrl" ng-repeat="item in feeds">
<il>{{total}}</il>
</div>
答案 0 :(得分:1)
首先,您不得使用success
和error
方法,因为它们已被弃用,根据此deprecation notice:
弃用通知
已弃用
$http
遗留承诺方法success
和error
。请改用标准then
方法。如果$httpProvider.useLegacyPromiseExtensions
设置为false
,则这些方法会抛出$http/legacy
错误。
现在,关于你的问题:
主要问题是您尝试访问object
功能之外的data
success
。但是,您已在total
中拥有属性 data
,因此您无需存储在单独的变量中。
另外,为了增加每个项目的总数,您应该使用ngClick
指令,如下所示:
ng-click="addComment(item)"
$scope.addComment = function(item) {
item.total = parseInt(item.total) + 1;
}
这是代码段正在运行:
(function() {
angular
.module('app', [])
.controller('MainCtrl', MainCtrl);
MainCtrl.$inject = ['$scope'];
function MainCtrl($scope) {
$scope.feeds = [
{
"comment":"very nice",
"total":"3",
"user":"max"
},
{
"comment":"interesting",
"total":"8",
"user":"okonah"
},
{
"comment":"wow",
"total":"20",
"user":"soja"
}
];
$scope.addComment = function(item) {
item.total = parseInt(item.total) + 1;
}
}
})();
<!DOCTYPE HTML>
<html ng-app="app">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
</head>
<body ng-controller="MainCtrl">
<div ng-repeat="item in feeds">
<ul>
<li>{{item.comment}}</li>
<li>{{item.total}} Comments</li>
<li>Commented by{{item.user}}</li>
</ul>
<button ng-click="addComment(item)">add up</button>
</div>
</body>
</html>