Javascript 角度指令范围绑定在ng repeat中不起作用
我和Angular一起工作有一段时间了。然而,今天我发现定制指令中的attr没有正确绑定,这很奇怪。以下是代码摘录:Javascript 角度指令范围绑定在ng repeat中不起作用,javascript,angularjs,Javascript,Angularjs,我和Angular一起工作有一段时间了。然而,今天我发现定制指令中的attr没有正确绑定,这很奇怪。以下是代码摘录: <div ng-repeat="item in items"> <io-map geo-location-x="item.data.x" geo-location-y="item.data.y" zoom-level="item.data.zoom"></io-map> </div> angular.directive('io
<div ng-repeat="item in items">
<io-map geo-location-x="item.data.x" geo-location-y="item.data.y" zoom-level="item.data.zoom"></io-map>
</div>
angular.directive('io-map', function() {
return {
restrict: 'EA',
scope: {
geoLocationX:'=',
geoLocationY:'=',
zoomLevel:'='
},
template: '<div id="map-' + Math.round(Math.random()*100000000) + '" style="height:400px"></div>',
link: function (scope, element, attrs) {
//Some logic...
//I checked the attrs here, and found attrs.geoLocationX and so on are just plain strings like "item.data.x", meaning they are not bound, while I can assure you that item.data.x has its value.
}
}
})
指令('io-map',函数(){
返回{
限制:“EA”,
范围:{
地理位置X:“=”,
地理位置:'=',
zoomLevel:“=”
},
模板:“”,
链接:函数(范围、元素、属性){
//一些逻辑。。。
//我在这里检查了attrs,发现attrs.geoLocationX等只是像“item.data.x”这样的普通字符串,这意味着它们没有绑定,但我可以向您保证item.data.x有它的值。
}
}
})
怎么了?提前感谢。使用带有
=
绑定的隔离作用域将无法使用属性解析值
scope: {
geoLocationX:'=',
geoLocationY:'=',
zoomLevel:'='
},
您应该使用范围
:
link: function (scope, element, attrs) {
//Some logic...
//use
var valueForGeoLocationX = scope.geoLocationX;
}
如果您使用=
绑定,为什么要使用attrs
?您应该已经可以使用scope.geoLocationX
访问该值,然后双向绑定将在没有任何$watch
@DavinTryon的情况下工作。我只是将“scope”误认为是“attrs”。你说得对真粗心!如果我早一点见到你,调试的时间就会省下来了P