Javascript 创建observable,并将其他observable作为单个映射返回
我有一个自己的绑定,用于在Javascript 创建observable,并将其他observable作为单个映射返回,javascript,knockout.js,observable,Javascript,Knockout.js,Observable,我有一个自己的绑定,用于在knockoutJS中进行的numeric输入,它只接受数字 为了制造大数字,我在NumberField中声明了各种数字实例,如: var NumberField = function () { var self = this; self.maskFormat = "0"; self.firstNumber = ko.observable(""); self.secondNumber = ko.observable(""); self.thirdNu
knockoutJS
中进行的numeric
输入,它只接受数字
为了制造大数字,我在NumberField
中声明了各种数字实例,如:
var NumberField = function () {
var self = this;
self.maskFormat = "0";
self.firstNumber = ko.observable("");
self.secondNumber = ko.observable("");
self.thirdNumber = ko.observable("");
};
及
在代码中,当我需要使用它时,我必须这样做:
let unwrapNumbers = this.numbers().cleanNumber().split("").map(function (item){
return Number(item);
});
这是可行的,但是。。。我很确定有一条更简单、更直的路。。。。有什么建议吗?我认为将计算结果分为两部分会有所帮助:
var NumberField=函数(){
var self=这个;
self.firstNumber=ko.可观察(1);
self.secondNumber=ko.可观察(2);
self.thirdNumber=ko.可观察(3);
self.orderedNumbers=ko.pureComputed(函数(){
返回[self.firstNumber,
self.secondNumber,
self.thirdNumber].map(ko.unwrap);
});
self.cleanedNumber=ko.pureComputed(函数(){
返回self.orderedNumbers().join(“”);
});
};
var nf=新的NumberField();
//如果您需要这些号码:
log(nf.orderedNumbers());
//如果你想要绳子
console.log(nf.cleanedNumber())代码>
我认为将计算结果分为两部分会有所帮助:
按顺序获取要包含的数字
基于有序值创建字符串
通常,将一个计算单元拆分为多个纯计算单元是有意义的,这些纯计算单元有一个明确的数据处理职责
var NumberField=函数(){
var self=这个;
self.firstNumber=ko.可观察(1);
self.secondNumber=ko.可观察(2);
self.thirdNumber=ko.可观察(3);
self.orderedNumbers=ko.pureComputed(函数(){
返回[self.firstNumber,
self.secondNumber,
self.thirdNumber].map(ko.unwrap);
});
self.cleanedNumber=ko.pureComputed(函数(){
返回self.orderedNumbers().join(“”);
});
};
var nf=新的NumberField();
//如果您需要这些号码:
log(nf.orderedNumbers());
//如果你想要绳子
console.log(nf.cleanedNumber())代码>
.map(ko.unwrap)代码>是我一直在寻找的<代码>:)
.map(ko.unwrap)代码>是我一直在寻找的<代码>:)
this.cleanNumber = ko.pureComputed(function () {
return this.firstNumber().toString() + this.secondNumber().toString() + this.thirdNumber().toString();
}, this);
let unwrapNumbers = this.numbers().cleanNumber().split("").map(function (item){
return Number(item);
});