Как установить и получить значения из другого файла в angularjs - PullRequest
0 голосов
/ 12 февраля 2019

В AngularJS я хочу создать файл, в котором я хочу создать set и get метод для установки и затем получения некоторого значения.Я создал файл myAppModel (опубликовано ниже), но я точно не знаю, как установить и получить значения из этого файла в моем файле контроллера.Кто-нибудь может подсказать, как мне установить и получить переменную channel_list в файле myAppModel из файла моего контроллера?

myAppModel.js

var channel_list;

function set_channel_list(channels) {
    channel_list = channels;
}

function get_channel_list() {
    return channel_list;
}

myCtrl.js

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

</div>

<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {

});
</script>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы должны включить свои файлы в HTML

/// myCtrl.js
<html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"> 
    </script>
    <script src="myAppModel.js"></script>
<body>
...

<script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
        get_channel_list(); 
    });
</script>

Теперь вы можете использовать set_channel_list и get_channel_list в myCtrl.js.Вы можете создать угловой сервис, как предлагали другие, но он сам по себе не достигнет того, что вы хотите.

По мере роста вашего приложения вы захотите изучить пакет и такие инструменты, как Webpack, Gulp или Rollup.Тогда вы можете, например, (используя импорт ES6) сделать это:

myAppModel.js

var channel_list;

export function get_channel_list() { ... }

myCtrl.js

import { get_channel_list } from 'myAppModel';

var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
    get_channel_list();
});

Упаковщик будет создавать файл, который (например, main.js ) можно затем включить в шаблон.

main.html

...
<script src="main.js"></script>
...
0 голосов
/ 12 февраля 2019

Вы можете воспользоваться услугой для этого.И вы можете иметь эту службу в другом файле.

var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope, channelService) {
  $scope.test = channelService.getMyChannel();
});

app.service('channelService', function() {
    this.channel_list = [];

    this.set_channel_list = function(channels) {
        this.channel_list = channels;
    };
    
    this.get_channel_list = function() {
        return this.channel_list;
    };

    this.getMyChannel= function() {
      return 'ABC';
    };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
{{test}}
</div>

Подробнее об услугах в Angularjs здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...