来自javascript回调函数的{Aurelia框架更新模型

时间:2017-03-27 10:32:51

标签: javascript callback aurelia

我尝试将一段代码从纯JavaScript迁移到Aurelia,我似乎无法弄清楚以下代码(在视图模型中执行):< / p>

var callbackFunction = 'DmsToWorkflowsCallback';
var treeEnum = new BrowseTreeNodeEnums();
var contentType = treeEnum.Document;
var url = dmsUrlPrefix + 
          "BrowseDlgEx.aspx?" + 
          "multiSelect=1" + 
          "&title=Attach" + 
          "&callback=" + callbackFunction + 
          "&contentType=" + contentType + 
          "&context=btworkflows;" + domain;
window.open(url, "_blank", "height=600, width=800,status=0,toolbar=0,menubar=0,location=no,modal=1,dialog=yes,top=100,left=100");

在纯JavaScript中,调用窗口(没有文档的自定义插件)能够找到回调函数(第1行)并正确执行其余的业务逻辑;然而,在Aurelia,它似乎无法找到所提供的功能!

我尝试在类内外指定回调函数(使用常规函数声明),并使用this.DmsToWorkflowsCallback作为回调函数规范,但没有成功...

我甚至尝试使用<script>标记在视图中添加一个虚拟回调函数,但仍然无法获得一个突破点!

如果有人有任何建议我会非常感激!

1 个答案:

答案 0 :(得分:0)

您只需在window对象上设置回调函数即可。如果您要调用的函数是VM上的函数,那么最好将调用包装在胖箭头函数中:

window.theCallback = () => this.theCallback();
window.open('http://localhost:9000/foo.html', '_blank');

然后,在子页面中,您将使用opener引用调用此函数。

opener.theCallback();