当我点击按钮时,从Sitecore SPEAK应用程序调用JS文件中的方法时,我收到以下错误消息:
TypeError:this.product不是函数 this.product()
this.product()
是函数名称:
define(["sitecore"], function (Sitecore) {
var model = Sitecore.Definitions.Models.ControlModel.extend({
initialize: function (options) {
this._super();
},
products: function () {
var input = this.get("input");
$.ajax({
url: "/api/sitecore/Product/Find",
type: "POST",
data: { input: input },
context: this,
success: function (data) {
this.set("output", data);
}
});
},
product: function () {
var input2 = this.get("input2");
$.ajax({
url: "/api/sitecore/Product/FindSingle",
type: "POST",
data: { input2: input2 },
context: this,
success: function (data) {
this.set("output2", data);
this.set("output3", data.TitleS);
}
});
return null;
},
});
var view = Sitecore.Definitions.Views.ControlView.extend({
initialize: function (options) {
this._super();
},
product: function () {
this.product();
}
});
Sitecore.Factories.createComponent("ProductSearch", model, view, ".sc-ProductSearch");
});
从SPEAK Button.Click事件调用上述方法为: 的的javascript:app.product();
我们可以做些什么来避免这种情况?
答案 0 :(得分:1)
如果这是您的SPEAK应用程序的PageCode,您可以更新JavaScript以扩展Sitecore.Definitions.App而不是Sitecore.Definitions.Models.ControlModel.extend吗?
EG。像这样定义SPEAK应用程序。
define(["sitecore", "jquery", "underscore"], function (Sitecore, $, _) {
var SpeakExample = Sitecore.Definitions.App.extend({initialize: function (options) {
},
products: function () {
var input = this.get("input");
$.ajax({
url: "/api/sitecore/Product/Find",
type: "POST",
data: { input: input },
context: this,
success: function (data) {
this.set("output", data);
}
});
},
product: function () {
var input2 = this.get("input2");
$.ajax({
url: "/api/sitecore/Product/FindSingle",
type: "POST",
data: { input2: input2 },
context: this,
success: function (data) {
this.set("output2", data);
this.set("output3", data.TitleS);
}
});
return null;
},return SpeakExample;});
答案 1 :(得分:1)
试试这个,
define(["sitecore"], function (Sitecore) {
var model = Sitecore.Definitions.Models.ControlModel.extend({
initialize: function (options) {
this._super();
app = this;
},
products: function () {}
});
}

在按钮中点击键入:javascript:app.ProductSearch.product()
答案 2 :(得分:0)
尝试在视图定义中的product方法中调用this.model.product()
而不是this.product()
。