我有一些输入,我想按插入顺序获取数据,例如:
如果我插入值aa
,那么我希望获得值bbb
{{ 1}} befor aa
我在网上搜索并发现此订单是使用Map
确保的,但我不知道如何将其与ng-model
一起使用。
先感谢您。
的修改
我正在使用一个存储输入值的对象和一个带有值的自定义键
这是一个example,如果你在输入3
然后2
然后1
插入值,然后点击确定,在控制台中输出将按字母顺序排序
答案 0 :(得分:1)
JavaScript对象属性没有保证顺序,请参阅this answer。
尝试使用数组。
答案 1 :(得分:1)
如@czosel所述,javascript对象不是有序的,通常按键的字母顺序排序。因此,您的最佳解决方案可能不仅仅是使用ng-model
指令。
以下是您可以尝试的两种可能性:
在每个<input />
位置,ng-blur
指令将确定输入的顺序。例如:
<强> HTML 强>
<input ng-blur="onBlur('model1')" ng-model="model1" />
<input ng-blur="onBlur('model2')" ng-model="model2" />
<强> controller.js 强>
app.module('myModule').controller('myCtrl', ['$scope', function($scope) {
$scope.count = 0;
$scope.onBlur = function(key){
// check if anything was entered
if($scope[key]){
// make sure this is first time data was entered into this input
if(!$scope[key].order)
$scope[key].order = $scope.count++;
}
};
}]);
将值存储在数组中。与第一个解决方案类似,但不是保持计数,而是完全放弃ng-model
并手动将值添加到数组中(在检查它之后是否已经存在时,这会变得有点棘手数组)。当然你也必须自己处理更新,所以第一种方法肯定会更简单。如果出于某种原因你决定选择这种方法,那么lodash库可能会有很大的帮助。
很多运气!
答案 2 :(得分:0)
您可以排队(先进先出)以按插入顺序获取数据。触发一个函数并将绑定在ng-model中的值存储到队列中。
Ex:ng-model = data //这里的数据将是bbb
var queue = [];
function bind(value){
queue.push(value); // value will be bbb
}
如果用户输入aa,则需要再次调用bind函数来推送队列中的值 U可以按插入顺序获取值。