我正在使用自定义的 Umbraco 安装,并且遇到这样的情况:当用户首次单击某些类型的内容的“发布”按钮时,我需要运行一些额外的用户交互。实际上,这将弹出一个框,允许他们在将发布的内容共享到第三方服务时使用自定义消息。
虽然我精通 Javascript,但我并没有花很多时间使用 Angular,而且我所做的事情相当直接。
在这种情况下,编辑器使用 Umbraco 中内置的标准 Angular Controller - 理想的情况是 Hook 到其范围并在提交表单时添加事件处理程序,但我不知道如何访问它,我怀疑它可能根本不可能。
我通过插件在页面中提供了 JavaScript,但我可以直接访问涉及的表单元素,但我觉得这可能非常脆弱 - 特别容易受到 Umbraco 的影响更新 - 而且它总体上与后台的风格相悖。
Angular 或 Umbraco 是否提供了任何可以让我做到这一点的东西?如果没有,插入此行为的最实用方法是什么?
最佳答案
正如你所说,做这种事情很容易在更新期间中断。尽管使用 IContentService
事件不允许您显示模式客户端,但我建议您在应用程序启动期间在 IContentService.Saving
事件上注册一个偶数处理程序。
public class ApplicationStartup : ApplicationEventHandler
{
protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication,
ApplicationContext applicationContext)
{
ContentService.Saving += ApplicationEvents.ContentService_Saving;
base.ApplicationStarting(umbracoApplication, applicationContext);
}
internal static void ContentService_Saving(IContentService sender, SaveEventArgs<IContent> e)
{
if (e != null && e.SavedEntities.Any())
{
foreach (var entity in e.SavedEntities.Where(content=> content.ContentType.Alias == "something"))
{
}
}
}
}
关于javascript - 我可以使用 Angular 将客户端行为注入(inject) Umbraco 7 后台吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878637/