2015-09-29 41 views
0

我想使用點擊綁定增加和減去一個文本綁定的值。我不知道如何引用myNumber。敲擊點擊綁定與映射插件

HTML:

<a data-bind="click: increment"> 
    <i class="fa fa-chevron-up"> </i> 
</a> 
<div data-bind="text: myNumber"></div> 
<a data-bind="click: subtract"> 
    <i class="fa fa-chevron-down"> </i> 
</a> 

JS:

<script type="text/javascript"> 
    function increment(result){ 
     result.myNumber ++; 
    } 
    function subtract(result){ 
     result.myNumber --; 
    } 
    $.getJSON("/app/api/", function(result) { 

     function viewModel() { 
      return ko.mapping.fromJS(result); 
     }; 

     ko.applyBindings(new viewModel()); 
    }) 
    .error(function() { alert("error"); }); 
</script> 
+0

你有文字:mynumber的在您的數據綁定,哪裏是它的代碼??? – saj

+0

它從viewModel中獲取它。這一點工作正常 – user3972986

回答

0

,好像它是一些你不增加可觀察到的。它是一個二傳手/吸氣手。 另外,你綁定的函數需要成爲viewmodel的一部分。您可以在applyBindings之前在getJSON回撥中執行此操作。

vm = { 
 
    myNumber: ko.observable(3), 
 
    increment: function(result) { 
 
    result.myNumber(result.myNumber() + 1); 
 
    }, 
 
    subtract: function(result) { 
 
    result.myNumber(result.myNumber() - 1); 
 
    } 
 
}; 
 
ko.applyBindings(vm);
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css"> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<a href="#" data-bind="click: increment"> 
 
    <i class="fa fa-chevron-up"> </i> 
 
</a> 
 
<div data-bind="text: myNumber"></div> 
 
<a href="#" data-bind="click: subtract"> 
 
    <i class="fa fa-chevron-down"> </i> 
 
</a>

+0

Imho @royJ我們可以做這個簡單的操作甚至更好(你可能意識到困難)而不是填充視圖(這裏不需要)。像這樣http://jsfiddle.net/5h3vvn3q/。 –

+0

@supercool糟糕! '綁定'是不需要的。這是從一個不同的方式完成的。我想盡可能保持與OP一樣的東西,這就是爲什麼我使用'result'。 –

+0

哦,我現在看@royJ我剛剛看到OP問題:D LoL。乾杯 –