-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