【问题标题】:Opencpu and MeteorOpencpu 和 Meteor
【发布时间】:2016-02-09 12:49:34
【问题描述】:

我已经看到someexamples 将 opencpu 与 angular 一起使用,但没有在流星中使用 opencpu 的示例(可以轻松实现 angular)。

是否就像在meteor中包含ocpu.seturljquery.min.js一样简单(就像here一样),还是在使用opencpu时需要在meteor中以不同的方式思考?

例如,there might be some conflicts between angular and meteor

我知道这是一个分散的问题,但我发现我并不是唯一一个对此感到疑惑的人。
相关:

例如(感谢http://jsfiddle.net/ramnathv/uatjd/15/):

var myApp = angular.module('myApp', ['angular-meteor']); //added 'angular-meteor'

//set CORS to call "stocks" package on public server
ocpu.seturl("//public.opencpu.org/ocpu/library/graphics/R")


myApp.factory('OpenCPU', function($http){
  return {
     Dist: function(dist){
       var url = "http://public.opencpu.org//ocpu/library/stats/R/" + dist + 
          "/json"
       return $http.post(url, {n: 100})
     }
  }
})

myApp.controller("HistCtrl", function($scope, $http, OpenCPU){    
    $scope.dist = 'rnorm'
    $scope.dists = ['rnorm', 'runif']
    $scope.color = 'blue'
    $scope.colors = ['blue', 'red', 'darkmagenta']
    $scope.breaks = 10
    $scope.submit = function(){
      var req = $("#plotdiv").rplot("hist", {
         x : $scope.data,
         col: $scope.color,
         breaks: Math.floor($scope.breaks),
         main: $scope.main
      });   
    }
    $scope.$watchCollection('[main, color, breaks, data]', function(x){
     $scope.submit()  
    })
    $scope.$watch('dist', function(newDist){
       OpenCPU.Dist(newDist).success(function(result){
         $scope.data = result  
       }) 
    })
})

以上是一个“正确”的起点吗?应该如何在meteor(即opencpu、jquery.min.js)中声明依赖关系?新流星,所以任何建议都非常感谢!

【问题讨论】:

  • 不错的赏金,但请将问题格式化为更具可读性并添加相关代码。
  • 我已经编辑了您的帖子以使其更具可读性,我会留给您一个更能代表您的问题的问题标题
  • 谢谢大家,我添加了我正在考虑的示例。
  • 当你问这是否是一个正确的起点时,你的意思是什么?代码有效吗?代码是否实现了您想要的所有功能?如果不是,那么确切的问题是什么?我不了解 OpenCPU,但我知道 jQuery 包含在 Meteor 的客户端,并且可以在带有 api.use('jquery') 的包中使用。你可能想制作自己的 OpenCPU Meteor 包来使用它。
  • 作为外部资源的一个工作示例,根据help center,它与 StackOverflow 无关。相反,尝试整合这些技术并询问具体问题。

标签: angularjs r meteor restful-architecture opencpu


【解决方案1】:

不使用角度(不知道为什么需要它),但这是流星中的超级基本设置:

HTML:

<head>
  <title>opencpu</title>
  <script src="//cdn.opencpu.org/opencpu-0.4.js"></script>
</head>

<body>
  <h1>Testing OpenCPU</h1>
  {{> hello}}
</body>

<template name="hello">
</template>

JS:

if (Meteor.isClient) {

    Template.hello.onRendered(function() {
        // ocpu.seturl("//public.opencpu.org/ocpu/library/graphics/R");
        // couldn't come up with a good example for this

        ocpu.seturl("//public.opencpu.org/ocpu/library/stats/R")
        // this gives me a CORS error but the below still seems to work
        console.log(ocpu);

        var req1 = ocpu.call("rnorm", {n: 100}, function(session1){
            var req2 = ocpu.call("var", {x : session1}, function(session2){
                session2.getObject(function(data){
                    alert("Variance equals: " + data);
                });
            });
        });
    });
}

我在过去 30 分钟内学到的关于 opencpu 的所有信息——很少!所以我不知道如何克服 CORS 错误。指向图形包时似乎没有发生该错误,但对于那个我想不出一个好的例子。

【讨论】:

  • CORS 错误说明了什么?因为我没有收到任何错误:)
  • Template.hello.onRendered 是在 Meteor 中合并 opencpu 的唯一/最佳方式吗?
  • 这不是最好的方法,但绝对是最简单的。在我看来,最好的方法是按照 Kyll 的建议从它创建一个包。 -- 很高兴您没有收到 CORS 错误。我可能只是对 opencpu 本身做错了。
  • 好的:) 不,我只是用了你的前任!
  • 赏金发生了什么?
猜你喜欢
  • 2014-10-02
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多