淘汰JS重构

时间:2015-10-10 14:25:09

标签: javascript knockout.js

我是knockoutjs的新手,我也不是JS大师。我用这个代码在墙上敲我的头,我需要有人帮我重构并让它变干。

HTML Razor 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个文件的代码

1 个答案:

答案 0 :(得分:0)

您可以创建一个GlobalModule函数,一个单独的Js文件并放入其中的所有函数。

然后首先引用GlobalModule文件并开始使用它

GlobalModule.getCity();

我想指出的另一件事是,如果您使用Knockout,那么您应该考虑尽可能少地使用Jquery。

根据上面的代码片段,您可以根据需要使用“attr”绑定来更改Css。

这将使Code更干净,并有助于改善维护。