我对angularjs有一定的了解,但我更像一个R程序员,因此我正在尝试使用OpenCPU js库。
有一件事我不能得到我的头是为什么我不能分配从一个简单的API请求的输出到公共OpenCPU服务器,rnorm(n = 2)函数,到一个角$范围。让我困惑的是,我可以使用jquery通过ID分配返回的json。
根据我的理解,最好不要将jquery混合到angular控制器中。我这样想对吗?
app.controller('rCtrl', function($scope){
req = ocpu.rpc('rnorm',{
n : 2
}, function(output){$('#output').text(output)});
})
不工作$scope
app.controller('rCtrl', function($scope){
req = ocpu.rpc('rnorm',{
n : 2
}, function(output){$scope.normalValues = output)});
})
因为你正在使用一个非角度的工具,你正在分配$scope。在Angular摘要循环之外的normalValues。使用$scope.apply()来修复这个问题:
app.controller('rCtrl', function($scope){
req = ocpu.rpc('rnorm',{
n : 2
}, function(output){
$scope.$apply(function(){
$scope.normalValues = output;
});
)});
});
你也可以只调用$scope.$apply()后,你设置你的范围值,但我个人喜欢回调语法,因为它使它更容易看到你为什么使用它。
我猜这是因为你的函数从未触发$digest
循环-所以你必须强制一个$timeout
app.controller('rCtrl', function($scope, $timeout){
req = ocpu.rpc('rnorm',{
n : 2
}, function(output){
$timeout(function() { $scope.normalValues = output })
})
})