2014-06-12 65 views
1

假設我有一個指令myDirective。該指令想要有一組標記名稱tags,例如['new', 'owner']。這個數組是像飛行一樣快速生成的;將函數的返回值傳遞給指令 - AngularJS

<my-directive ng-repeat="that in a" tags="getTags(that.id)"></my-directive> 

angular.module('x').directive(... 
    scope: { 
    tags: '@' 
    } 
}; 

其中getTags是一個返回標籤數組的函數。

像這樣,tags只會成爲字符串"getTags(that.id)"。如果我把它放在一個表達式中;

<my-directive ng-repeat="that in a" tags="{{getTags(that.id)}}"></my-directive> 

tags仍然是一個字符串。但它看起來像"['new', 'owner']" - 但仍然是一個字符串。我如何傳遞數組?

回答

3

您需要解析變量:

scope.tags = scope.$eval(scope.tags); 
+0

我似乎不能做這樣的覆蓋'scope.tags'變量? – Unidan

+0

然後嘗試使用其他變量。 – Wawy

+0

你好,我有同樣的問題,並使用$ eval解決了它,你能解釋我爲什麼我應該使用$ eval,如果有更好的方法來實現同樣的事情,而不使用$ eval? –

相關問題