我可以使用 Angular 将客户端行为注入 Umbraco 7 后台吗?

Can I inject a client-side behaviour into the Umbraco 7 back-office using Angular?

我正在使用自定义的 Umbraco 安装,我遇到了这样一种情况,当他们第一次点击某些类型的 'Publish' 按钮时,我需要 运行 一些额外的用户交互的内容。实际上,这将是弹出一个框,允许他们在将发布的内容共享到第三方服务时使用自定义消息。

虽然我很精通 Javascript,但我并没有花很多时间在 Angular 上,而且我所做的一切都相当直接。

在这种情况下,编辑器使用内置于 Umbraco 中的标准 Angular 控制器 - 理想的情况是挂接到其范围并在提交表单时添加事件处理程序,但我可以'弄清楚如何访问它,我怀疑它可能根本不可能。

我的 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"))
            {


            }
        }
    }
}