AngularJS 尝试从 html 中的输入中获取名称:字段,并添加 val 0 的静态字段(喜欢)



所以我正在创建一个应用程序,我从API中提取啤酒列表。JSON 包含每种啤酒的以下字段 {名称: "啤酒", id: 数字, 喜欢: 数字}

我遇到的问题是我正在尝试将新啤酒添加到现有列表中。我只需要名称和喜欢字段即可将新啤酒发布到 API,ID 将自行生成。

代码如下

HTML
<div ng-app="beerApp" ng-controller="BeerController" class="jumbotron">
<div class="all-beer js-beer-slider">
<div class="single-beer" ng-repeat="beer in allBeer">
<div>{{beer.name}}</div>
<div>Likes: {{beer.likes}}</div>
<button ng-click="updateLikes(beer, -1)">X</button>
<button ng-click="updateLikes(beer, 1)"><3</button>
<br>
<button class="btn">Add Beer</button>
<br>
<input type="text" ng-model="beerToAdd.name">
<button class="btn2" ng-click="addBeer(beerToAdd)">Submit</button>
</div>
</div>  
</div>
JS
$scope.addBeer = function (check) {
var likes = {'likes': '0'}
$scope.allBeer.push(likes);
console.log(check);
};

好的,所以这显然不是我拥有的所有 JS,但这就是我正在处理这个问题的内容。就目前而言,名称:字段被填充,并且是检查在控制台中返回的内容。我不知道如何将 likes: 默认值为 0 传递给数组,以便可以将新项目以以下格式推送到 API {name:"输入字段中的任何内容",likes:0}

我对Angularjs相当陌生,不确定从这里开始。非常感谢任何指导。

这应该有效

$scope.addBeer = function (newBeer) {
$scope.allBeer.push({'name': newBeer.name,'likes':0});
};

您需要将name字段添加到对象中:

let newBeer = {name: check.name, likes: 0}
$scope.allBeer.push(newBeer);
//when you post, just set the data param to `newBeer`, ex:
//$http({
//    url: yourApiUrl,
//    method: "POST",
//    data:newBeer //like so
//})

你想推送对象,所以像这样添加 name 键和ng-model对应的值

$scope.beerToAdd={};
$scope.addBeer = function (check) {
var obj = {'name':$scope.beerToAdd.name,'likes': 0}
$scope.allBeer.push(obj);
console.log($scope.allBeer);
};

最新更新