-1
我是新来的knockoutjs,我也不是JS大师。我用这段代码将我的头撞在墙上,我需要有人帮助我重构并使其干燥。Knockout JS重构
HTML剃刀ASP.NET MVC
@Html.TextBoxFor(m => m.Zip, new { @maxlength = "10", @class = "form-control",@data_bind = "value: zip, event:{ keyup: $root.getCity, keydown: $root.inputnumeric}" })
ViewModel(options) {}
self.inputnumeric= function (data, event) {
var key = event.keyCode;
if (!((key == 8) || (key == 46) || (key >= 35 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105))) {
return false;
}
return true;
}
self.getCity = function (data, event) {
var target = event.target;
var value = target.value;
var data = {
zipCode: value
}
if (value.length < 4) {
$(target).removeClass('valid').addClass('error');
} else if (value.length > 4) {
$(target).addClass('error').removeClass('valid');
} else if ((value.length == 4)) {
$.getJSON(self.options.cityapiurl, data, function (result) {
if (result.success) {
self.city(result.cityName);
$('#City').addClass('valid').removeClass('error');
$(target).addClass('valid').removeClass('error');
} else {
$(target).addClass('error').removeClass('valid');
$('#City').addClass('error').removeClass('valid');
}
})
.error(function() { alert("error hapens"); });
}
};
现在我有这样的一个viewmodel.js。
但我也有140个其他js文件几乎相同的代码。
如何让这些文件之间共享某些东西。
所以,我有seft.city和self.inputnumeric基地kllas所以没有必要复制粘贴文件140
我投票结束这个问题作为题外话题,因为它要求代码审查。你可以看看[codereview.se],但一定要查看[他们的常见问题](http://codereview.stackexchange.com/help/on-topic),因为你的问题目前有一些问题,使它可能他们也会关闭它(出于其他原因)。 – Jeroen