如何在angularjs中从其他文件设置和获取值

时间:2019-02-12 09:52:27

标签: angularjs

在AngularJS中,我想创建一个文件,在其中创建Function sheetExists(sheetToFind As String) As Boolean 'copied from: 'https://stackoverflow.com/questions/6040164/excel-vba-if-worksheetwsname-exists 'by Dante is not a Geek 'https://stackoverflow.com/users/571433/dante-is-not-a-geek Dim mySheet As Worksheet sheetExists = False For Each mySheet In Worksheets If sheetToFind = mySheet.Name Then sheetExists = True Exit Function End If Next mySheet End Function set方法进行设置,然后获取一些值。我已经创建了文件get(在下面发布),但是我不完全知道如何在控制器文件中设置和获取该文件的值。所以有人可以指导我如何从控制器文件中设置和获取myAppModel文件中的channel_list变量吗?

myAppModel.js

myAppModel

myCtrl.js

var channel_list;

function set_channel_list(channels) {
    channel_list = channels;
}

function get_channel_list() {
    return channel_list;
}

2 个答案:

答案 0 :(得分:0)

您可以为此使用服务。您可以在另一个文件中使用此服务。

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 here

中的服务

答案 1 :(得分:0)

您应该将文件包含在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>

现在,您可以在myCtrl.js中使用 set_channel_list get_channel_list 。您可以像其他人建议的那样创建角度服务,但仅靠它无法实现您想要的。

随着应用程序的增长,您将需要研究捆绑器和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>
...