我正在进行自定义绑定以显示分数:
我喜欢这样的HTML
<div class="notesite" id="note_1" data-bind="Score: ScoreValue()"></div>
self.ScoreValue= ko.observable("");
绑定就是这样:
ko.bindingHandlers.Score = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var myscorevalue = valueAccessor();
if (myscorevalue) {
//if(myscorevalue is decrease)
{
$("#divarrow").hide();
}
//if(myscorevalue is increasing)
{
$("#divarrow").show();
}
}
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var myscorevalue = valueAccessor();
if (myscorevalue) {
//if(myscorevalue is decrease)
{
$("#divarrow").hide();
}
//if(myscorevalue is increasing)
{
$("#divarrow").show();
}
}
}
};
我的问题是,根据我通过的分数,我想显示向上和向下箭头!
让我看看我的值是= self.ScoreValue(&#34; 10&#34;)
然后我将值更新为self.ScoreValue(&#34; 15&#34;)
然后我要显示$("#divarrow").show();
如果我将值更新为self.ScoreValue(&#34; 5&#34;)
然后我想隐藏$("#divarrow").hide();
答案 0 :(得分:2)
您可以使用beforeChange
订阅创建另一个具有上一个分数的字段(例如PreviousScoreValue
):
self.PreviousScoreValue = ko.observable(self.ScoreValue());
self.ScoreValue.subscribe(function(value) {
self.PreviousScoreValue(value);
}, null, 'beforeChange');
然后在自定义绑定中,使用它来比较新的ScoreValue
:
init: function (element, valueAccessor, allBindingsAccessor, viewModel,
bindingContext) {
var myscorevalue = valueAccessor();
var previousvalue = bindingContext.$data.PreviousScoreValue();
if (myscorevalue) {
if(myscorevalue < previousvalue)
{
$("#divarrow").hide();
} else if(myscorevalue > previousvalue)
{
$("#divarrow").show();
}
}
},