2

我正在尝试通过将我的简单静态 Web 应用程序转换为单页 Backbone 应用程序来自学 Backbone.js。我的问题是我找不到一个简单的教程来解决我的问题。

我有以下功能:

function convert(ins) {
    var numbers = parseFloat(ins);
    //Test for NAN
    if(isNAN(numbers)){
        $("#output").html("Error");
    }else{
        var conver = (numbers * 12);
        $("#output").html(conver);
    }
}

现在,当用户在字段中输入数据时会调用此函数。它会自动更新输出 div。我想要很多转换“应用程序”。当用户访问页面时,转换功能需要更新。我应该如何为我的每个页面制作模型?我想在转换函数中更改的唯一行是:

var conver = (numbers * 12);

显然,我对骨干很陌生,这是我可以开始重新处理我的网站代码之前需要解决的最后一个问题。

我真的很感激任何帮助。谢谢!

4

2 回答 2

2

由于从您发布的代码看来,所发生的一切都是基于某些用户交互的一些转换,因此似乎没有支持模型的普通视图就足够了。如果您的转换函数依赖于某些特定数据(例如来自您的服务器的一些公式),那么可能需要一个模型,但根据您发布的内容,我并不认为有必要。

例如,假设您的标记类似于以下内容

  <div id="divConversionCalc">
    <label for="txtInputNum">Enter inches</label> <input type="number" id="txtInches" />
    <label>Feet</label> <div id="dvOutput"></div>

  </div>

您可以声明一个backbone.js 视图来封装您的函数,如下所示

    var ConversionView = Backbone.View.extend({
        el: '#divConversionCalc',

        events: {
            "change #txtInches": "convert"
        },

        convert: function (e) {
            var numbers = parseFloat(this.$el.find('#txtInches').val());
            if (isNaN(numbers)) {
                this.$el.find("#dvOutput").html("Error");
            } else {
                var conver = (numbers * 12);
                this.$el.find("#dvOutput").html(conver);
            }

        }

    });

    $(function () {
        new ConversionView();
    });

JSBin

于 2013-02-05T04:11:05.757 回答
0

在没有看到其余代码的情况下,您的问题似乎是它ins是一个字符串,并且您不能将字符串与 Javascript 中的数字相乘。如果您将其更改为,您可能会很好numbers * 12

于 2013-02-05T03:07:02.067 回答