我有一个包含对象的数组。我想从类型为number的输入框更改此数组中的对象数。因此,每次输入框中的数字增加时,我都会增加长度,减少相同的数量。我还想推送一个默认对象或弹出最后一个对象,具体取决于它增加或减少的数组。这是我目前的代码。
// html
<input type="number" class="form-control" min="0" max="12" ng-click ="topEntriesSelectOffense()" ng-value="page.offense.topRow.length">
//my controller
$scope.topEntriesSelectOffense = function () {
// push if number is increased
$scope.page.offense.topRow.push({
"1": {
"firstName": "FirstName",
"lastName": "LastName",
"headshot": "file/path"
},
"2": {
"firstName": "FirstName",
"lastName": "LastName",
"headshot": "file/path"
},
"3": {
"firstName": "FirstName",
"lastName": "LastName",
"headshot": "file/path"
},
"position": "POS"
});
// pop if the number is reduced
$scope.page.offense.topRow.pop();
}
问题是我无法确定用户何时减少数量,我不太确定如何检测增值或减少价值。如果我使用ng-model作为page.offense.topRow.length,我会得到一个在最后一个索引后没有对象的数组,因为它会增加长度,然后推送对象,在数组中留下一个间隙。数组看起来像这个数组= [1,3]。谢谢!
答案 0 :(得分:0)
假设您有两个函数createObj()
来创建对象,destroyObj()
来销毁数组中的对象。
现在你要说你需要根据输入中的变量添加/减去对象。
在这种情况下,我会坚持阅读angularjs的$watch
功能。
你可以做的是你可以有2个变量,即oldvar和newVar以及比较,并根据需要多次调用所需的函数。例如 - 如果初始值为10且用户将其设为7,那么您可以调用destroy()
函数3次。
$watch
函数
这是来自stackoverfllow的另一个有用的link,提供了一个如何使用它的简单示例。
答案 1 :(得分:0)
您应在号码字段中使用ng-change
代替ng-click
。这将确保即使使用键盘输入或复制/粘贴也会触发事件。
然后,在更改处理函数内部,只需要求当前值并使用数组splice()
函数来增大或缩小数组。