如何在angular的控制器中使用用户定义的类实例/对象?

时间:2013-10-16 11:26:25

标签: javascript html angularjs three.js

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

threeDimView_ = new threeDimView();

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

如何将此对象 - threeDimView_放入我的控制器中以获取此信息div?

function infoController(threeDimView_, $scope) 

如果我将其与$scope一起传递给控制器​​,则会收到错误消息:

Error: Unknown provider: threeDimView_Provider <- threeDimView_

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:0)

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

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

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

function infoController(threeDimView, $scope) 

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