【问题标题】:best way to access javascript array from angular controller从角度控制器访问 javascript 数组的最佳方法
【发布时间】:2015-05-12 22:08:27
【问题描述】:

通过角度控制器,能够使用在角度控制器之外声明的数组的最佳方式是什么?

首先我声明一个数组:

var cars = ["Saab", "Volvo", "BMW"];

我还有一个角度控制器:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function ($scope) {


});

我试过了:

在控制器中将变量作为引用传递:

var myApp = angular.module('myApp', []);

    myApp.controller('MyCtrl', function ($scope, url) {


    });

只是尝试从控制器中调用变量:

var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function ($scope) {

console.log(cars[1]);
});

但是,两者都没有奏效。

我如何做到这一点?

【问题讨论】:

  • 您可能想创建资源然后注入它,我认为这可能会有所帮助:stackoverflow.com/questions/30133415/…
  • 如果数组没有改变(即它是汽车类型的固定列表)。我会使用 Angular 常量。您可以像服务一样注入它们,但它不是对象。这只是您注入的数据。所以它仍然是一个数组类型。

标签: javascript arrays angularjs


【解决方案1】:

通常我会使用角度服务。 https://docs.angularjs.org/guide/services

您可以创建一个包含如下列表的服务:

var ListService = (function () {
    function ListService() {
        this.cars = ["", "", ""]
    }       
    return ListService;
})();
myApp.service("listService", [ListService]);

然后您可以像这样将该服务注入您的控制器:

var MyCtrl = function ($scope, listService) {
    console.log(listService.cars[1]);
}
myApp.controller('MyCtrl', ['$scope', 'listService', MyCtrl])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2017-10-05
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多