0

我已经使用three.js threeDimView编写了一个类,其中包含我的场景、相机等。我threeDimView_在我的 JS 代码中创建了这个类的一个全局对象。

threeDimView_ = new threeDimView();

现在我想在另一个 div 中显示一些与此相关的信息。

我如何获取这个对象 -threeDimView_进入我的控制器以获取这个信息 div?

function infoController(threeDimView_, $scope) 

如果我将它与 一起传递给控制器$scope​​,则会出现错误:

Error: Unknown provider: threeDimView_Provider <- threeDimView_
4

2 回答 2

1

我喜欢@khanh 的回答,但我可能会建议使用角度工厂,而不是服务。这是一个例子:

没有全局范围:

app.factory('threeDimView', function(){
    return new threeDimView();
});

具有全局范围:

var _threeDimView_ = new threeDimView();
app.factory('threeDimView', function(){
    return _threeDimView_;
});

然后您可以在控制器中声明一个依赖项,如下所示:

function infoController($scope, threeDimView){
    // use the threeDimView object (its already instantiated)
}
于 2013-10-16T13:58:12.630 回答
0

您可以尝试将其配置为服务,如下所示:

var app = angular.module("yourapp",[]);
app.service("threeDimView",threeDimView);

每当您想在控制器中使用它时,只需将其声明为参数:

function infoController(threeDimView, $scope) 

将对象注入控制器而不是访问全局变量或在函数内创建对象的想法是允许单元测试。

于 2013-10-16T12:53:23.367 回答