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

How to use user-defined class instances/objects inside angular's controllers?

本文关键字:用户 定义 实例 对象 angular 控制器      更新时间:2023-09-26

我用三个.js threeDimView编写了一个类,其中包含我的场景、摄像机等。我在JS代码中创建了此类threeDimView_的全局对象。

threeDimView_ = new threeDimView();

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

如何获取此对象 - threeDimView_到我的控制器以获取此信息div?

function infoController(threeDimView_, $scope) 

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

Error: Unknown provider: threeDimView_Provider <- threeDimView_
我喜欢

@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)
}

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

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

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

function infoController(threeDimView, $scope) 
将对象

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