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

时间:2016-10-12 01:25:07

标签: javascript html angularjs

好的,所以我有一个函数在文件调用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>

2 个答案:

答案 0 :(得分:0)

使用其他控制器时无法访问该功能,您应该选择FactoryService

或使用事件:使用$ scope。$ on,然后使用$ scope发送它。$ broadcast或$ scope。$ emit

工厂样品:

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

答案 1 :(得分:0)

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

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>