我已经开始学习angularjs,我正在尝试在按钮上插入新的值,单击现有的范围。我的页面中有一个按钮,每当我单击该按钮时,$scope.options方法触发了一些数据,需要添加到一个作用域变量中,以便在ng-重复时使用它。
首先,因为没有存在的数据,所以直接单击它的添加。当我单击下一次新值时,应该添加现有范围的值。
以下是我尝试过的,
$scope.options=function(options){
//$scope.datas=[];
//$scope.datas.push(options);
//$scope.datas = $scope.datas.concat(options)
$scope.datas=options;
console.log($scope.datas);
}
第一次点击按钮,我的范围看起来如下,
$scope.datas=["IARZ1DS099","CATL0DS32","IARZ1DS13","IATL0DS099","CARZ1DS099"];
有人能告诉我怎么做吗?提前谢谢!
发布于 2019-12-13 02:31:34
这是因为您正在赋值$scope.datas=options;
。您需要将值推送到$scope.datas
数组;
试试这个:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp', [])
.controller('MyCtrl', function MyCtrl($scope) {
$scope.options = function (options) {
if (!$scope.datas) {
$scope.datas = ["IARZ1DS099", "CATL0DS32", "IARZ1DS13", "IATL0DS099", "CARZ1DS099"]
} else {
$scope.datas.push("new value")
}
//console.log($scope.datas);
}
})
</script>
</head>
<body>
<div ng-controller="MyCtrl">
<button ng-click="options()">
add Data
</button>
<div ng-repeat="data in datas track by $index">
{{data}}
</div>
</div>
</body>
</html>
发布于 2019-12-13 02:26:01
使用JavaScript
合并方法。
代码的错误之处在于,您直接将新的一组记录分配给您的数组,该数组用新数据覆盖现有的数组。确切地说,您需要的是将数组与新的数据集连接起来,并将其重新分配到现有的数组中。
$scope.datas = $scope.datas.concat(options);
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.datas = ["IARZ1DS099"];
$scope.options = function(options){
console.log('Before concat -- ', $scope.datas);
$scope.datas = $scope.datas.concat(options);
console.log('After concat -- ', $scope.datas);
}
$scope.options(["CATL0DS32","IARZ1DS13","IATL0DS099","CARZ1DS099"]);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
</div>
发布于 2019-12-13 03:41:47
找到解决办法了。
$scope.options=function(options){
if (!$scope.datas) {
$scope.datas =options;
} else {
for(i=0;i<options.length;i++){
$scope.datas.push(options[i]);
}
}
}
@ your 7566666谢谢你的帮助。
https://stackoverflow.com/questions/59320529
复制相似问题