1

我有一个简单的代码字符串。当页面加载到函数所在的位置时,我想显示一个默认值numResults()。在某些时候,我想numResults()使用新值进行更新,然后在不重新加载页面的情况下更改字符串。

$('#step1').before('Showing results 1 - ' + numResults());

function numResults(value) {
    var results = 10; // default number

    if (value) {
        return value; // show updated value
    } else {
        return results; // show default
    }
}
4

3 回答 3

2

这是 knockout.js 的典型用例。

运行示例:http: //jsfiddle.net/55fXu/1/

<div data-bind="text:numResults"/>

<script>
$(function() {
  function AppViewModel() {
    this.numResults = ko.observable(10);
  }

  ko.applyBindings(new AppViewModel());
});
</script>
于 2012-12-10T17:48:42.850 回答
1

我认为您可以为此使用一个jQuery.Callbacks对象:

// flags: store latest value, and prevent same callback adding multiple times
var resultNumberChanged = $.Callbacks("memory unique");
resultNumberChanged.fire(10); // init with "default number"

resultNumberChanged.add(function(val) {
    $('#step1').before('Showing results 1 - ' + val); // update each time it changes
}); // will also be fired immediately, as there is the default value already

// then, at any point, e.g. inside the numResult function when there is a parameter
…
    resultNumberChanged.fire(newvalue);
于 2012-12-10T17:43:08.943 回答
0

首先,在开始 else 之前关闭你的 if 标签。好吧,如果你想做一些简单的事情,试试这个:

$(function () {
        $("#myText").val(numResults());

        $("#myButton").click(function(){
            $("#myText").val(numResults("123"));
        });
    });

    function numResults(value) {
        var results = 10; // default number

        if (value) {
            return value; // show updated value
        }
        else {
            return results; // show default
        }
    }
于 2012-12-10T18:04:39.643 回答