我正在尝试将我的地址传递给名为gmaps的指令:
restrict: 'EA',
template: '<div class="gmaps"></div>',
replace: true,
scope: {
address: '=address'
},
地址在控制器中定义:
app.controller('MapCtrl', function($scope) {
$scope.streetNumber = "12";
$scope.streetName = "sussex street";
$scope.city = "sydney";
$scope.country = "australia";
$scope.address = $scope.streetNumber + "," + $scope.streetName + "," + $scope.city + "," + $scope.country;
console.log($scope.address);
});
当我尝试检查地址时,它是未定义的:
link: function postLink(scope, iElement, iAttrs) {
console.log('address', scope.address);
答案 0 :(得分:0)
删除此部分:
scope: {
address: '=address'
}
请参阅updated plunker(现在正在按照您的意图行事)。
我认为无论何时address: '=address'
,它都使用隔离范围(请参阅directives的angularjs文档和Ctrl + F'隔离范围')。
您可以通过在控制器中说console.log($scope)
并在指令中说console.log(scope)
来测试它。您会看到您的scope
ID都不同(003和004),这表明它们指的是两个不同的范围。
每当您删除address: '=address'
时,您都可以在指令和控制器中再次console.log
范围,并且您将看到两个ID现在都是003,这意味着它们现在都在引用在相同的范围内。