如何从另一个js文件中调用angular表达式中的函数?

How can I call a function inside an angular expression from another js file

本文关键字:表达式 angular 函数 调用 另一个 js 文件      更新时间:2023-09-26

我有一个函数在一个名为rot-n.js的文件中旋转一个名为rotateString()的字符串

我怎样才能访问这个函数在AngularJS的ng-model上调用,以显示我视图中的加密代码?

下面是我的代码:
<html ng-app="cipherApp">
<head>
  <title>ROT-N CIPHER</title>
  <script type="text/javascript" src='https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js'></script>
  <script type="text/javascript" src="rot-n.js"></script>
  <script type="text/javascript" src="app.js"></script>
  <link href='https://fonts.googleapis.com/css?family=Lato'
rel='stylesheet' type='text/css'>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<textarea rows="8" cols="45" ng-model="cipher.encryptIn"></textarea>  <input type="number" min="0" max="25" ng-model="cipher.rotN">
<p>{{rotateString(cypher.encryptIn, cypher.rotN)}}</p>

在作用域上创建一个调用加密函数的函数:

app.controller("myController", function($scope) {
    $scope.rotFn = function (din) {
        var dout;
        rotateString(din,dout);
        return dout;
    };
});

然后使用ng-change指令调用函数:

<div ng-controller="myController">
     <textarea rows="8" cols="45" 
         ng-model="cypher.encryptIn"
         ng-change="cipher.rotN=rotFn(cypher.encriptIn)">
     </textarea>  
    <input type="number" min="0" max="25" ng-model="cipher.rotN">
</div>     

当你使用其他控制器时,你不能访问该函数,你应该选择Factory或Service

或使用Event: listen with $scope。$on和$scope一起发送。$broadcast或$scope。美元发出

工厂样品:

angular.module('share',[])
    .factory('dataService', function() {
       var _dataObj = {};
       return {
        dataObj: _dataObj
      };
    })
    .controller('One', function($scope, dataService) {
      $scope.data = dataService.dataObj;
    })
    .controller('Two', function($scope, dataService) {
      $scope.data = dataService.dataObj;
    });