2015-10-01 36 views
0

我的应用程序面板上有一个按钮,显示“访问电子学习门户”。meteor方法返回外部网址,如何链接到客户端的外部网址

单击该按钮会调用Meteor.method查询电子学习门户API以接收访问链接(单点登录)。

我有这个工作正常。

我不能解决的是如何将该链接从服务器发送到客户端,以便我可以将它们重定向到它。我只是无法围绕同步,异步,回调等方式将我的头包裹起来。我不明白为什么该方法不会将客户端的结果发送给客户端。我的结果是从用户的角度看未定义

SO:点击按钮 - >在线学习门户网站在新标签页(或同一选项卡等等)

但从应用角度打开:点击按钮 - >模板。事件 - > meteor.call - >运行服务器的方法 - >获取URL(我已经成功了这么远) - >发送用户检索的网址(例如)http://www.google.com

这里是我的代码:

事件:

Template.dashboard.events({ 
    'click #lmsAccess': function(e, t) { 
    e.preventDefault(); 

    Meteor.call('lmsLink', function(error, result) { 
     if(error) { 
     console.log(error.reason); 
     return; 
     } 
     console.log(result); //returns as undefined 
    }); 

    } 
}); 

方法

if (Meteor.isServer) { 

    Meteor.methods({ 
    'lmsLink': function() { 
     //removed all my irrelevant variables from here for stack question 

     HTTP.call(verb, 'http://sandbox.wceaapi.org/'+ endPoint, { 
     headers: { 
      "Request-Time": timeStamp, 
      "Api-Key": key, 
      "Signature": hash 
      } 
     }, function(error, response) { 
     if (error) { 
      console.log(error); 
     } else { 
      console.log(response); 
      var result = JSON.parse(response.content); 
      var accessLink = result.records.accessLink; 
      console.log(accessLink); 
      return accessLink; 
     } 
     }); 
    }// end lmsLink 
    });//end method 
} 

回答

3

如果有网址客户端(通过方法回调函数),你可以简单地使用

location.href = returnedUrlFromMethod; 

这将用户重定向到该网址。

+0

嗨,感谢您的回复。这肯定有助于我的下一步,但我也许应该澄清,尽管我的服务器控制台正在记录accessLink,但我无法弄清楚如何从服务器到客户端。将更新原始问题 – Sean

+0

嗯,这不是100%确定的,但我认为你必须使用这里描述的模式:https://www.discovermeteor.com/patterns/5828399 – kiewietr

+0

嘿,我设法得到期货工作,现在都在工作。 感谢您的帮助 – Sean