0
KnockoutJSのclickイベントに問題があります。 私がポップアップを開くための関数を呼び出す必要がありますアイコンをクリックするか、むしろ私はページをロードするとき、私は次のようなエラーkoクリック参照エラー
knockout-3.2.0.js:63 Uncaught ReferenceError: Unable to process binding "click: function(){return showOfferDetails }"
Message: showOfferDetails is not defined
を取得すると私は、この関数を呼び出す:
<div title="<spring:message code="frontendResources.Details" />" class="btn-bar btn-details" data-bind="click: showOfferDetails"></div>
ViewModelのjsコードは次のとおりです。
(function(viewModels) {
var viewModel = function(offerID) {
var self = this;
this.pageStates = {
view: 0,
showDetails: 2
};
this.showOfferDetails = ko.observable(null);
this.pageState = ko.observable(this.pageStates.view);
this.offerCredit = ko.observable(null);
this.currentItemToShow = ko.observable(null);
this.hasResults = ko.observable(true);
this.tabViewModel = new TabViewModel();
this.loadData = function() {
backoffice.viewModels.ajaxOverlay.showLoader();
self.showOfferDetails();
};
this.showOfferDetails = function() {
backoffice.viewModels.ajaxOverlay.showLoader();
self.pageState(self.pageStates.showDetails);
backoffice.viewModels.ajaxOverlay.hide();
};
this.hideDetails = function() {
self.currentItemToShow(null);
self.pageState(self.pageStates.view);
}
this.detailsIsVisible = ko.computed({
read: function() {
return self.pageState() == self.pageStates.showDetails;
},
write: function (value) {
if (value) {
self.showOfferDetails();
} else {
self.hideDetails();
}
}
});
this.loadData();
};
viewModels.offerCredit = viewModel;
})(backoffice.viewModels);
何が問題なのですか?
var self = this;
が、あなたはのviewmodelの観測や機能のすべては、この自己変数を使用していない:
、これはするためのものですか? - this.showOfferDetails = ko.observable(null); – gkb
は無関係ですが、問題を理解しても機能しない場合でも動作しません。 – faserx
現在のバインディングコンテキストに 'showOfferDetails'プロパティがないことを意味します。あなたは 'with 'または' foreach'バインディングの中にいますか?要素のバインディングコンテキストを記録する方法は次のとおりです。http://stackoverflow.com/documentation/knockout.js/5066/debugging-a-knockout-js-application#t=201610241038274760762 – user3297291