2013-06-19 78 views
0

我可以在控制器上完成它(標題),我想知道我是否也可以在我的指令中執行此操作。將過濾器值分配給指令中的變量

比方說,我注入過濾器,以我的指令,像這樣...

app.directive('ngDirective', 
    ['$compile','$filter', 
    function ($compile, $filter) { 
     'use strict'; 

和鏈接功能裏面我有以下。

var filter = $filter('i18n'); 
var requiredMessage = filter('is_required'); 

我知道在指令上我失去了我的$範圍,這可能是原因。

編輯:這裏是我的代碼http://plnkr.co/edit/u1L9SHdAvZnvEqwVBeJg

關於如何解決這個問題有什麼想法預覽的plunker?

+0

你能提供你的代碼的plunker?這似乎相當簡單,但我不知道你是如何試圖去處理它(這是整個代碼設置)?我懷疑你沒有正確定義你的指令的範圍...... – callmekatootie

+0

喲@callmekatootie它和這個鏈接幾乎相同,但是在指令而不是控制器內。 http://stackoverflow.com/questions/16775750/angularjs-apply-filter-in-controller – marceloduende

+0

@callmekatootie,可以讓你更好地理解我在說什麼。 http://plnkr.co/edit/u1L9SHdAvZnvEqwVBeJg – marceloduende

回答

0

如果你想使用某個過濾器,你必須加載它。

下面是在指令模塊中定義過濾器和加載的示例。

http://plnkr.co/edit/61X6i32By8PA6W7BLh52?p=preview

angular.module('myfilters', []). 
filter('i18n', function() { 
    return function() { return 'my message'; }; 
}); 

angular.module('myapp', ['myfilters']). 
    directive('ngTest', function($compile, $filter) { 
    'use strict'; 
+0

過濾器已被加載,仍然沒有bueno。任何其他想法? – marceloduende

+0

您可能希望將i18n過濾器包含在您的重擊器中。它沒有加載在那裏,所以毫無疑問爲什麼它是空的。 – Tosh