2013-02-25 66 views
0

使用此示例,我可以非常容易地创建一个计数器。我如何在一个页面上多次使用它?尝试使用Knockout.js创建多个计数器

<div> 
    You've clicked <span data-bind="text: numberOfClicks"></span> times 
    <button data-bind="click: incrementClickCounter">Click me</button> 
</div> 

<script type="text/javascript"> 
    var viewModel = { 
     numberOfClicks : ko.observable(0), 
     incrementClickCounter : function() { 
      var previousCount = this.numberOfClicks(); 
      this.numberOfClicks(previousCount + 1); 
     } 
    }; 
</script> 

谢谢!

回答

0

我不确定我是否完全理解您在一页上多次使用这个字词的意思? 你想让所有的实例共享点击次数,还是应该彼此独立?

如果他们只是分享它,那么你可以将多个元素绑定到相同的点击事件。

<div> 
    You've clicked <span data-bind="text: numberOfClicks"></span> times 
    <button data-bind="click: incrementClickCounter">Click me</button> 
    <button data-bind="click: incrementClickCounter">Click me Too</button> 
</div> 
+0

对不起,我需要他们相互独立的。 – user1840885 2013-02-25 19:31:04

1

在这种情况下,您可以使用JavaScript闭包。

function Counter(){ 
    var self = this; 
    self.numberOfClicks = ko.observable(0); 
    self.incrementClickCounter = function() { 
     self.numberOfClicks(self.numberOfClicks() + 1); 
    }; 
} 

var viewModel = { 
    counter1: new Counter(), 
    counter2: new Counter() 
}; 

http://jsfiddle.net/marcandrew/wckE2/

+0

完美。谢谢! – user1840885 2013-02-25 22:49:59

+0

当页面刷新时,有没有办法保持这个值?我没有“点击”的数量? – user1840885 2013-02-25 22:58:10

+0

你可以发送defaultNumber例如:http://jsfiddle.net/marcandrew/wckE2/ – 2013-02-26 14:23:19

相关问题