2016-11-07 92 views
0
<input type="text" data-bind="value: myObs" /> 
    var myObs = ko.observable(); 
     <!-- ko if: myObs === "hello" --> 
      Whatever! html etc... 
     <!-- /ko --> 

如果我的可觀察值等於「hello」,那麼顯示「whatever!」。當用戶輸入「hello」時,我希望顯示該字段,並且當它從輸入中移除時,它會再次消失。KO如果可觀察到的值匹配值顯示/隱藏

回答

3

您需要myObs後加上括號,否則,你可觀察到的功能,相較於"hello"字符串,而不是觀察到本身的價值:

var vm = { 
 
    myObs: ko.observable("hello") 
 
} 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<input type="text" data-bind="value: myObs, valueUpdate: 'input'" /> 
 
<!-- ko if: myObs() === "hello" --> 
 
    Whatever! html etc... 
 
<!-- /ko -->

+0

請問有沒有辦法在默認情況下輸入「hello」? –

+1

@TomRudge是的,只需要在observable:'myObs:ko.observable()'中刪除''hello''部分即可。我只把它放在那裏,以顯而易見HTML if'條件正在工作。 :) –