在角度范围内调用函数外部的正确方法是什么?

时间:2016-06-21 20:08:42

标签: javascript angularjs

我有一个生成URL的函数。我想在ng-href内使用它。这一切都很好,直到我不得不将方法移到$scope之外。这不再适用了。

请参阅此plunker示例:

编辑带有评论的新Plunker示例:

https://plnkr.co/edit/z4txeXD1J2PJCfcBNw5C?p=preview

旧链接: https://plnkr.co/edit/qb9w6A5nCNet2MCynnGH?p=preview

我可以使用它来处理一些黑客攻击,例如将方法放在根范围内(如示例中所示),但这确实很笨拙。有没有更好的方法将方法“导入”范围?

2 个答案:

答案 0 :(得分:1)

您可以创建一个directive来生成网址并创建ng-href(甚至创建一个锚<a>

答案 1 :(得分:0)

为什么不从外部传入你需要的变量的$ window窗口,而只是像在ng-href中的角度一样使用$ scope?     ng =“{}”使用angular中的单个花括号指的是表达式。

  <a ng-href="query">$scope.query</a>
    </div>
    <script>
    function getUrlGlobalScope(q) {
      return 'some_url_global?q=' + q;
    }

    (function(angular) {
      'use strict';
    angular.module('myApp', [])
      .run(function($rootScope) {
        $rootScope.getUrlRootScope = getUrlGlobalScope;
      })
      .controller('MyController', ['$scope','$window', function($scope,$window) {
        $scope.getUrlInScope = function(q) { return 'some_url?q=' + q; }


        $scope.query = 'query';