使用我的视图模型时:
<img src="{{ asset('img/stripe.png') }}" style="height:250px;max-width: 100%;">
我试图反转计算值。因此,将显示表格或警告消息。
我创建了以下可订阅功能:
function SummaryViewModel (arrayString) {
//------- Attributes -------
var self = this;
self.Claims = ko.observableArray(namesapce.Helpers.subnamespace.ToCollection(arrayString));
self.ShowTable = ko.computed(function() {
var collection = ko.unwrap(self.Claims());
return collection.length > 0;
}, this);
self.showWarningPanel = self.ShowTable.Not();
}
但是,ko.subscribable.fn.Not = function () {
return ko.pureComputed(function() {
var bool = this();
return !(ko.unwrap(bool));
});
};
的值不提供计算属性的值。它改为返回当前范围内的所有对象。
最初我将方法标记为this()
,这也没有返回计算值。
我一直在参考KO网站上的文档来帮助构建该功能。
答案 0 :(得分:3)
您必须将this
传递给您在内部创建的pureComputed
:
ko.subscribable.fn.Not = function () {
return ko.pureComputed(function() {
return !this();
}, this);
// ^^^^ Here, you tell knockout to execute the function with `this`
// context. Alternatively, you could use the var `self = this`
// pattern.
};
var myObs = ko.observable(true);
var invertedObs = myObs.Not();
myObs(false);
console.log("observable: " + myObs());
console.log("inverted: " + invertedObs());
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
&#13;