基本上这里的问题是 Sitecore SPEAK 无法为组件找到您的 javascript。
看来您在自己的目录中拥有 SPEAK 组件渲染和 javascript,这是最佳实践。您要做的就是告诉 SPEAK 在哪里寻找您的组件。这在包含文件夹中的 Sitecore SPEAK 配置中进行控制。
这是一个补丁包含文件的示例,用于在 SPEAK 查找 javascript 组件的目录中进行补丁。
将源设置为包含自定义组件的目录。 Deep = true 参数将扫描子目录。还要注意此示例中的类别名称“MikeRobbins”。选择对您的组件有意义的任何东西,我会避免使用 Sitecore 一个不影响 sitecore 标准组件。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<speak.client.resolveScript>
<processor type="Sitecore.Resources.Pipelines.ResolveScript.Controls, Sitecore.Speak.Client">
<sources hint="raw:AddSource">
<source folder="/sitecore/shell/client/MikeRobbins/Layouts/Renderings" deep="true" category="mikerobbins" pattern="*.js,*.css" />
</sources>
</processor>
</speak.client.resolveScript>
</pipelines>
</sitecore>
</configuration>
更新您的组件 CSHTML 并将 userControl.Requires.Script("mikerobbins"..... 部分设置为您在上面选择的类别名称。请参见下面的示例。
@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("mikerobbins", "JsonDataSource.js");
userControl.Attributes["type"] = "text/x-sitecore-jsondatasource";
userControl.DataBind = "Json: json";
var htmlAttributes = userControl.HtmlAttributes;
}
<script @htmlAttributes>
</script>
在我的项目中可以看到一个例子。https://github.com/sobek1985/SitecoreSPEAKBulkRolePermissions
希望这会有所帮助,任何问题都给我留言。