2013-02-25 52 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