【问题标题】:Aurelia framework update model from javascript callback functionAurelia 框架从 javascript 回调函数更新模型
【发布时间】:2017-03-27 10:32:50
【问题描述】:

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

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> 标记在视图中添加一个虚拟回调函数,但仍然无法获得要命中的断点!

如果有人有任何建议,我将不胜感激!

【问题讨论】:

  • 您的 Aurelia 代码是什么样的?
  • @AshleyGrant 我正在从我的 ViewModel 中的一个简单的 Aurelia click.delegate="..." 函数​​调用上面的代码,而我想要做的是捕捉 window.open 的返回回调。
  • 也许这会有所帮助:stackoverflow.com/questions/2797560/…

标签: javascript callback aurelia


【解决方案1】:

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

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

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

opener.theCallback();

【讨论】:

  • 添加评论,这个问题确实是stackoverflow.com/questions/25098573/…的重复(尽管这里没有使用jQuery)。该答案说使用window.parent,但我无法让它工作。只有window.opener 有效。
猜你喜欢
  • 2011-04-28
  • 2011-04-26
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多