0
我有一個標記:我爲什麼必須經過兩次 - 隔離範圍的方法參數?
<div ng-controller="ProductController">
<inventory-Product
on-report="showData(p.name,p.price)"
ng-repeat="p in products"
name="{{p.name}}"
price="{{p.price}}">
</inventory-Product>
</div>
而且一個指令:
myApp.directive("inventoryProduct", function()
{
return {
restrict: "E",
scope : {
name : "@",
price: "@",
onReport:"&"
},
template: '<div>{{name}} costs {{ price}}$ </div> \
<div>\
<button \
class="btn btn-lg btn-danger" \
ng-click="onReport({name:name,price:price})">\
Change name\
</button>\
</div>'
}
})
(代碼是工作)
問:
的onReport:"&"
允許指令調用一些parentScope函數並傳入其參數。
好了 - 所以onReport
就像委託指向任何功能,在HTML標記被宣佈:
on-report="showData(p.name,p.price)"
但如果該指令的模板已經發送論點:
ng-click="onReport({name:name,price:price})"
而且parentScope的控制器功能已經知道功能:
$scope.showData = function (name,price)
{
alert("name="+name+" price="+price)
}
然後爲什麼我必須提及
on-report="showData(p.name,p.price)" ?
換句話說再次參數,似乎更符合邏輯寫
on-report="showData"
所以它只是點的功能,然後用這個路徑去:
我缺少什麼?
謝謝。當你說_調用控制器不能訪問這些值,因爲它們不在其範圍內 - - 什麼調用控制器?換句話說,我的樣本中實際發生了什麼? (參數POV),如果控制器沒有這些值會怎麼樣? –
調用控制器是ProductController。它在由該控制器控制的視圖內部,該指令被使用。所以showData()是一個暴露在該控制器範圍內的函數。 –
*如果控制器沒有這些值,那該怎麼辦?然後你會使用'on-report =「showData(name,price)」',這兩個參數將由指令提供,使用'onReport({name:name ,價格:價格})'。 –