2016-02-02 27 views
0
沒有顯示

我有以下ko.computed:可見在Knockout.js

self.itemsInBasket = ko.computed(function(){ 
      return self.selectedDomains.length > 0; 
     }); 

這是如果這是點擊,增加值顯示:

this.addToCart = function(viewModel, event) {  
      console.log('click'); 
      self.selectedDomains(self.selectedDomains() +1); 
     } 

在我的HTML我使用下面的數據綁定:

<div class="domains__selected" data-bind="visible: $root.domainSearch.selectedDomains.itemsInBasket"> 
<strong><span class="update--domain" data-bind="text: domainSearch.selectedDomains">&nbsp;</span>&nbsp; Domains selected</strong> 
</div> 

而且它增加罰款,但它不表示計。

任何人能發現什麼是錯或點我在正確的方向,我會感激:)

+1

您正在檢查'se'的'length'屬性lectedDomain'可觀察到你增加了,這沒有多大意義。 – JohnnyHK

+1

如果從JohnnyHK的評論中不明顯,你需要在檢查長度之前評估觀察值,否則你要檢查函數的長度。在你的itemsInBasket函數中做這件事:'返回self.selectedDomains()。length> 0;' – dfperry

回答

1

該解決方案爲我工作:

self.selectedDomains = ko.observable(""); 
 
    self.itemsInBasket = ko.computed(function() { 
 
     return self.selectedDomains() > 0; 
 
    }); 
 

 
    self.addToCart = function() { 
 
     console.log('click'); 
 
     self.selectedDomains(self.selectedDomains() + 1); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<div class="domains__selected" data-bind="visible: selectedDomains() "> 
 
    <strong><span class="update--domain" data-bind="text: selectedDomains">&nbsp;</span>&nbsp; Domains selected</strong> 
 
</div> 
 
<a class="btn btn-default btn-warning btn-xs" 
 
    data-bind="click: addToCart.bind($data)"> 
 
    Update 
 
</a>

+0

此解決方案的工作原理如下inteded!非常感謝你! –

1

試試這個:

self.itemsInBasket = ko.computed(function(){ 
     return self.selectedDomains() > 0; 
    }); 
+0

這並沒有真正解決它。它不增加它只是將數字添加到數組,並且可見綁定仍然沒有更新: -/ –

+0

試試這個: self.itemsInBasket = ko.computed(function(){ return self.selectedDomains()> 0; }); –

+0

不能不更新dom。它始終保持style =「display:none;」 –