2016-06-21 103 views
0

我有一个函数可以生成一个URL。我想在ng-href之内使用它。这很好,直到我不得不将该方法移到$scope之外。这不再起作用。在角度范围外调用函数的正确方法是什么?

请参见本plunker例如:

编辑新Plunker例如与评论:

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

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

我可以得到它与一些黑客工作,比如将该方法放在根作用域中(如示例中那样),但这实际上很笨拙。有没有更好的方法将“导入”方法纳入范围?

+0

你说的“我不得不搬到方法'$ scope'之外的意思这感觉就像一个XY问题,也不您的问题或你真的提供的链接的代码说明你正在尝试做的;他们会告诉你为一个未确定的问题尝试一些可能的“修复”,并且没有任何修复方法是推荐的方法来处理角。 – Claies

+0

你的plunk引用了一个script.js文件,你没有包含在你的plunk中 – jbrown

+0

@Claies hm ...抱歉,我不清楚 在plnkr链接中,'$ scope.getUrlInScope'曾经是我的方法,它的工作原理现在我想把这个方法移到控制器的外部(如我想要的将它移动到'getUrlGlobalScope')。我的第二个''标签d证明一旦我将该函数移出,只需更改函数名称(如预期的那样),就不会再使用ng-href了。第三和第四'''是我发现的方法,但我觉得他们不理想,这就是我问这个问题的原因。 – user3759055

回答

1

您可以创建一个directive,做URL生成并创建一个ng-href(甚至创建了一个锚<a>

+0

我想过这个,但是当我只需要一些简单的东西时,这对代码来说是一个很大的改变。 – user3759055

0

为什么不直接传递给你从外面所需要的变量$窗口,而不是仅仅使用$的范围,你通常在ng-href内的角度? ng =“{}”在角度中使用单个花括号表示表达式。 ?

<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'; 
相关问题