Javascript 与在app.js上绑定模块名称相比,是否有更好的方法动态加载viewmodel和view以显示模式?

Javascript 与在app.js上绑定模块名称相比,是否有更好的方法动态加载viewmodel和view以显示模式?,javascript,aurelia,Javascript,Aurelia,我现在所做的对我来说是不可靠的,我很想知道是否有更好的方法来做到这一点:我正在使用 在我的app.html中。当我需要显示一个模态时,无论viewmodel处于活动状态,它都会触发一个事件聚合器发布事件,其中包含三个模态模型。模式标题、按钮数组(字符串)和视图/视图模型的模块路径。在app.js中,我订阅模式事件,当一个事件通过时,我设置应用程序的 this.modalModel=modalModel 它立即绑定并加载视图和视图模型,然后显示模式(引导模式)。这是可行的,但有几个问题告诉我,必

我现在所做的对我来说是不可靠的,我很想知道是否有更好的方法来做到这一点:我正在使用

在我的app.html中。当我需要显示一个模态时,无论viewmodel处于活动状态,它都会触发一个事件聚合器发布事件,其中包含三个模态模型。模式标题、按钮数组(字符串)和视图/视图模型的模块路径。在app.js中,我订阅模式事件,当一个事件通过时,我设置应用程序的

this.modalModel=modalModel

它立即绑定并加载视图和视图模型,然后显示模式(引导模式)。这是可行的,但有几个问题告诉我,必须有更好的方法:

  • 重置app.js的modalModel时,不会对加载的模态的viewmodel调用canDeactivate()和deactivate()
  • 我认为我无法将任何参数传递到modal viewmodel中的activate()方法中
  • 它只是感觉不稳定
  • 是否有更好的方法动态加载视图和视图模型、绑定和所有内容,以便在关闭模式时可以正确地将其停用

    相关代码:

    
    &时代;
    ${modalModel.title}
    ${button}
    
    导出类应用程序{
    //...
    附({
    //...
    this.listen('show-modal',this.displaymodel.bind(this));
    this.listen('hide-modal',this.closeModal.bind(this));
    this.listen('show-modal-loader',this.showModalLoader.bind(this));
    this.listen('hide-modal-loader',this.hideModalLoader.bind(this));
    }
    显示模式(modalModel){
    this.modalModel=modalModel;
    $(“#主模态”).modal();
    }
    closeModal(){
    $(“#主模式”).model('hide');
    this.modalModel=null;
    }
    showModalLoader(){
    document.querySelector('#main modal.modal ajax').style.display='block';
    }
    hideModalLoader(){
    document.querySelector('#main modal.modal ajax').style.display='none';
    }
    倾听(事件,fn){
    this.eventAggregatorSubscriptions.push(this.ea.subscribe(event,fn));
    }
    }
    
    使用aurelia对话框插件

    要安装:
    jspm安装aurelia对话框

    要激活:在
    main.js
    configure()
    中,调用
    aurelia.use.plugin('aurelia-dialog')


    用法:

    canDeactivate
    deactivate
    是屏幕激活生命周期的挂钩;它们只在绑定到路由器管道的组件中工作。看看aurelia对话框,它是引导模式的一个特定项目