2016-06-21 157 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'; 
相關問題