Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度指令范围绑定在ng repeat中不起作用_Javascript_Angularjs - Fatal编程技术网

Javascript 角度指令范围绑定在ng repeat中不起作用

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

我和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-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