Мой вопрос несколько схож с ответом на неотвеченный вопрос. (Не уверен, хотя) Sitecore 8 SPEAK: Getting an Error When calling a Method in JS FileSitecore 8 SPEAK - Вызов пользовательских компонентов Метод Javascript
Я использую Sitecore8
На моей странице есть кнопка и на его событие нажатия я хочу вызвать добавить() заказной источник данных компоненты.
Планировка:
JS код страницы:
define(["sitecore"], function (Sitecore) {
var JsonListPage = Sitecore.Definitions.App.extend({
initialized: function() {
alert('Inside Json PageList Init');
},
loadData: function() {
alert('Button clicked');
app.add();
}
});
return JsonListPage;
});
JS код для компонента пользовательского источника данных:
define(["sitecore"], function (Sitecore) {
var model = Sitecore.Definitions.Models.ControlModel.extend({
initialize: function (options) {
this._super();
this.set("json", null);
alert('Inside Jsondatasource Init');
},
add: function (data) {
var json = this.get("json");
if (json === null)
json = new Array();
// this is done because array.push changes the array to an object which then do no work on the SPEAK listcontrol.
var newArray = new Array(json.length + 1);
for (var i = json.length - 1; i >= 0; i--)
newArray[i + 1] = json[i];
newArray[0] = data;
this.set("json", newArray);
}
});
var view = Sitecore.Definitions.Views.ControlView.extend({
initialize: function (options) {
this._super();
this.model.set("json", null);
}
});
Sitecore.Factories.createComponent("JsonDatasource", model, view, ".x-sitecore-jsondatasource");
});
.cshtml для пользовательского компонента:
@using Sitecore.Mvc
@using Sitecore.Mvc.Presentation
@using Sitecore.Web.UI.Controls.Common.UserControls
@model RenderingModel
@{
var userControl = Html.Sitecore().Controls().GetUserControl(Model.Rendering);
userControl.Requires.Script("client", "JsonDatasource.js");
userControl.Class = "x-sitecore-jsondatasource";
userControl.Attributes["type"] = "text/x-sitecore-jsondatasource";
userControl.DataBind = "Json: json";
var htmlAttributes = userControl.HtmlAttributes;
}
<div @htmlAttributes>
am here again
</div>
При загрузке страницы:
- Это показывает предупреждение из пользовательских компонентов Init
- Затем показывает предупреждение от Init хозяина страницы
- На кнопку мыши он показывает предупреждение и после этого дает ошибку " приложение".
Есть немного, чего мне не хватает .. любая помощь будет оценена .. Пожалуйста, дайте мне знать, если вам нужны входы больше.
Заранее благодарен!
Большое спасибо! Я уже пишу приложение, просматривая вторую ссылку, которую вы предоставили. По какой-то причине изменения, внесенные в Javascript, не отражаются, если я не очистил кеш браузера. Есть идеи об этом? Или я должен задать другой вопрос? –
Да, это ожидалось, Sitecore очень хорошо кэширует JavaScript. – Komainu85