2012-07-29 87 views
2

簡單地說,我使用AngularJS試圖做這樣的事情:AngularJS - 你可以在一個JavaScript塊中引用一箇中繼器變量嗎?

<ul> 
    <li ng-repeat="thing in things"> 
    <a id="mybutton" href="link{{thing.Id}}">Click</a> 
    <script type="text/javascript"> 
     $("#mybutton").click(function() 
     { 
     alert("Id: " + {{thing.Id}}); 
     }); 
    </script> 
    </li> 
</ul> 

無論是和警報( 「ID:」 + thing.Id);產量錯誤(未鑑定的標記「{」和「事物」未分別定義)。有沒有一種方法,我可以訪問thing.Id從中繼器範圍內的JavaScript塊?

要添加一個實際的原因,我想建立並重定向到一個URL使用該值和其他一些在JavaScript(我有權訪問jQuery)的東西。

+3

注意文檔建議使用ng-href而不是href:http://docs.angularjs.org/api/ ng.directive:ngHref – Gloopy 2012-07-30 02:39:18

回答

1

我將其存儲到像元件 「數據-ID = {{thing.id}}」

然後從JavaScript讀取的ID背面使用該數據屬性。

6

由於angular.js不是基於文本的模板系統,而​​是使用DOM作爲其模板,因此在標記中使用角度表達式({{thing.id}})將無法使用。下面是更多關於這個話題:http://docs.angularjs.org/guide/compiler

現在,回到你的問題:你正在做什麼可以在angular.js很容易做到不使用jQuery,這裏是一個工作的jsfiddle:http://jsfiddle.net/pkozlowski_opensource/n6UfC/

訣竅是使用NG-點擊您的href:

<a ng-click="click(thing.id)">Click</a> 

,然後點擊處理函數在你的控制器:

$scope.click = function(thingId) { 
    alert("Id: " + thingId); 
    //$location.path('/some/path/'+thingId); 
} 

在控制器的功能中,您可以使用jQuery指令,但使用angular的$ location服務會更好:http://docs.angularjs.org/api/ng.$location

+3

很好的答案pkozlowski。對於OP:我很抱歉給你一個甚至沒有接近正確的解決方案。我回答關於我沒有使用的模板引擎的問題真的是錯誤的。 – 2012-07-30 12:09:06

相關問題