Sitecore 8 SPEAK:在JS文件中调用方法时出错

当我点击按钮时从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();

我们可以做些什么来避免这种情况?

如果这是您的SPEAK应用程序的PageCode,您可以更新JavaScript以扩展Sitecore.Definitions.App而不是Sitecore.Definitions.Models.ControlModel.extend吗?

例如。 像这样定义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;}); 

试试这个,

  define(["sitecore"], function (Sitecore) { var model = Sitecore.Definitions.Models.ControlModel.extend({ initialize: function (options) { this._super(); app = this; }, products: function () {} }); } 

尝试在视图定义中的product方法中调用this.model.product()而不是this.product()