Javascript 从number类型的输入框更改数组长度
我有一个包含对象的数组。我想从number类型的输入框更改此数组中对象的数量。因此,每次输入框中的数字增加时,我都会增加长度,减少时也是如此。我还想推送一个默认对象或弹出最后一个对象,这取决于它在数组中的大小。这是我目前的代码Javascript 从number类型的输入框更改数组长度,javascript,html,angularjs,arrays,Javascript,Html,Angularjs,Arrays,我有一个包含对象的数组。我想从number类型的输入框更改此数组中对象的数量。因此,每次输入框中的数字增加时,我都会增加长度,减少时也是如此。我还想推送一个默认对象或弹出最后一个对象,这取决于它在数组中的大小。这是我目前的代码 // html <input type="number" class="form-control" min="0" max="12" ng-click ="topEntriesSelectOffense()" ng-value="page.offense.topRo
// 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();
}
//html
//我的控制器
$scope.topEntriesselectAnsware=函数(){
//如果数字增加,则按
$scope.page.offension.topRow.push({
"1": {
“名字”:“名字”,
“lastName”:“lastName”,
“头像”:“文件/路径”
},
"2": {
“名字”:“名字”,
“lastName”:“lastName”,
“头像”:“文件/路径”
},
"3": {
“名字”:“名字”,
“lastName”:“lastName”,
“头像”:“文件/路径”
},
“位置”:“位置”
});
//如果数量减少,则弹出
$scope.page.offension.topRow.pop();
}
问题是,我真的不知道用户何时减少了数字,我也不确定如何检测值的增加或减少。如果我对page.offence.topRow.length使用ng模型,我将得到一个数组,该数组在最后一个之后的索引中没有对象,因为它将增加长度,然后推动对象,在数组中留下一个间隙。该数组看起来像这样的数组=[1,3]。谢谢 假设您有两个函数,
createObj()
用于创建对象,destroboj()
用于销毁数组中的对象
现在,您需要根据输入中的变量添加/减去对象
在这种情况下,我会坚持阅读angularjs的$watch
函数。
这里您可以做的是,您可以有两个变量,即oldvar和newVar,并根据需要多次比较和调用所需函数。如果初始值为10,用户将其设为7,则可以调用destroy()
函数3次
下面是$watch
功能的角度
下面是StackOverflow提供的另一个有用的示例,以提供如何使用它的简单示例。您应该在数字字段上使用
ng change
而不是ng click
。这将确保即使在使用键盘输入或复制/粘贴时也会触发事件
然后,在您的change handler函数中,只需请求当前值,然后使用array
splice()
函数来增大或缩小数组。我喜欢使用$watch函数的想法我一直在尝试让watch函数工作,但似乎并不是每次更改输入框时都会触发它这里是我的代码,$scope.$watch('topEntriesOffense',函数(newValue,oldValue){if(newValue>oldValue){topEntriesOffenseAdd();}}})代码>感谢所有的帮助,我使用了Soviut建议的ng更改,当它更改时,我调用一个函数来创建obj()和销毁obj(),就像您建议的那样,这取决于模型的当前值。我将旧值保存在一个范围变量中,当前值将通过调用this.value在函数中检索。我无法使手表正常工作。但这种方法很有效。谢谢你的帮助!!很高兴能帮忙。然而,我很好奇为什么$watch
功能没有帮助。