2014-01-23 110 views
0

是否有人知道爲什麼,如果我做「drawStock =「drawStock」像Angularjs - 屬性等於值

<tr ng-repeat="icl in ic.internal_consumption_lines" drawStock="drawStock(locator_id, product_id)" ...></tr> 

然後在我的劇本

scope: { 
... 
drawStock: "&", 
... 
}, 
template:{ 
... 
<span>{{drawStock({locator_id:ic.internal_consumption_lines[index].transaction.locator.id, product_id:ic.internal_consumption_lines[index].transaction.product.id})}}</span> 
... 
... 
$scope.drawStock = (lid, pid) -> 
for i of $scope.product_stocks 
    if $scope.product_stocks[i].locator_id == lid 
    if $scope.product_stocks[i].product_id == pid 
     return $scope.product_stocks[i].stock 

的drawStock功能將不顯示股票,但如果我改變的屬性爲不同的名稱比值,讓我們說像'drawstock =「drawStock(...'它的工作原理...:

<tr ng-repeat="icl in ic.internal_consumption_lines" drawstock="drawStock(locator_id, product_id)" ...></tr> 

然後在我的劇本

scope: { 
... 
drawstock: "&", 
... 
}, 
template:{ 
... 
<span>{{drawstock({locator_id:ic.internal_consumption_lines[index].transaction.locator.id, product_id:ic.internal_consumption_lines[index].transaction.product.id})}}</span> 
... 
... 
$scope.drawStock = (lid, pid) -> 
for i of $scope.product_stocks 
    if $scope.product_stocks[i].locator_id == lid 
    if $scope.product_stocks[i].product_id == pid 
     return $scope.product_stocks[i].stock 
+0

有什麼區別上面的片段和下面的片段之間?它們看起來和我完全一樣...... – gkalpak

+0

drawStock =「drawStock vs drawstock =」drawStock,看大寫字母「S」,它使屬性和值之間有所區別。 – tomascharad

回答

2

根據the docs

標準化元素的標籤和屬性的名稱,以確定哪些元素匹配該指令。我們通常通過區分大小寫的camelCase標準化名稱(例如ngModel)來引用指令。但是,由於HTML不區分大小寫,因此我們通過小寫形式引用DOM中的指令,通常在DOM元素上使用dash-delimited屬性(例如ng-model)。

正常化過程如下:

  1. 地帶x-並從元件的前data- /屬性。
  2. :,-_ -delimited名稱轉換爲camelCase

在你的情況下,當角看到drawStock: "&"它理解它作爲drawStock: "&drawStock",產生誤解它放入您的HTML找draw-stock
而且由於HTML中沒有draw-stock(但只有drawStock),它不起作用!

如果您想在您的HTML中使用camelCase表單(例如,因爲您發現它更易讀),並且由於HTML不區分大小寫,所以您應該(1)明確指定屬性名稱或(2)在小寫字母中使用小寫你的指示。例如:

HTML:<tr ... drawStock="..."> // (this is camelCase)

指令(1):scope: { drawStock: '&drawstock' } // (1st camelCase, 2nd lowercase) 指令(2):scope: { drawstock: '&' } // (this is lowercase)
(以上兩個指令指的是 「駝峯格式」 HTML屬性)

+0

感謝ExpertSystem! – tomascharad