Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Angularjs 角度谷歌地图,信息窗口内的指令是';t绑定数据_Angularjs_Google Maps - Fatal编程技术网

Angularjs 角度谷歌地图,信息窗口内的指令是';t绑定数据

Angularjs 角度谷歌地图,信息窗口内的指令是';t绑定数据,angularjs,google-maps,Angularjs,Google Maps,我正在尝试使用一个信息窗口。选择标记后,窗口将放置在该标记处并显示。它的内容是一些文本和一些指令。内部的指令甚至可以工作,除非我尝试将某些数据绑定到其属性 在本例中,我有一个评级指令(显示一组星星),它具有数字属性,如下所示: <div stars number="person.rating"></div> 该指令: ndtApp.directive('stars', stars); function stars() { return { res

我正在尝试使用一个信息窗口。选择标记后,窗口将放置在该标记处并显示。它的内容是一些文本和一些指令。内部的指令甚至可以工作,除非我尝试将某些数据绑定到其属性

在本例中,我有一个评级指令(显示一组星星),它具有数字属性,如下所示:

<div stars number="person.rating"></div>
该指令:

ndtApp.directive('stars', stars);
function stars() {
    return {
        restrict: "AE",
        replace: 'true',
        scope: {
            number: "=",
            size: "@"
        },
        templateUrl: "shared/stars/stars.html",
        controller: controller
    };
}

function controller($scope){
    $scope.getEmptyStarsArray = getEmptyStarsArray;
    $scope.getStarsArray = getStarsArray;
    $scope.ratingSize = "";

    activate();

    function activate(){
        if ($scope.size == 'sm'){
            $scope.ratingSize = 'rating-sm';
        } else if ($scope.size == 'lg'){
            $scope.ratingSize = 'rating-lg';
        } 

        console.log($scope.number);

    }

    function getEmptyStarsArray(){
        if ($scope.number === undefined) return 0;

        var rating = Math.round($scope.number);
        if (rating > 4) return null;
        return new Array(5 - rating);
    }

    function getStarsArray(){
        if ($scope.number === undefined) return 0;

        var rating = Math.round($scope.number);
        if (rating === 0) return null;
        if (rating > 5) return new Array(5);
        return new Array(rating);
    }
}
stars.html:

<div class="stars">
    <span ng-repeat="i in getStarsArray() track by $index" class="{{ratingSize}} rating glyphicon glyphicon-star"></span><span ng-repeat="i in getEmptyStarsArray() track by $index" class="{{ratingSize}} rating glyphicon glyphicon-star-empty"></span>
</div>


非常感谢您的帮助

似乎指令作用域属性未绑定,请尝试将
number
属性的作用域从
number:“=”
更改为
number:“@”
,并将指令初始化从
更改为

下面提供了一个类似的工作示例:

var-appMaps=angular.module('appMaps',['uiGmapgoogle-maps']);
控制器('mainCtrl',函数($scope,uiGmapIsReady){
$scope.map={
中心:{纬度:40.1451,经度:-99.6680},
缩放:4,
选项:{scrollwheel:false}
};
$scope.windowOptions={visible:false};
var getRandomLat=函数(){
return Math.random()*(90.0+90.0)-90.0;
};
var getRandomLng=函数(){
返回Math.random()*(180.0+180.0)-180.0;
};  
var getRandomRating=函数(){
返回Math.floor(Math.random()*11);
};
var createRandomMarker=函数(i){
变量ret={
纬度:getRandomLat(),
经度:getRandomLng(),
标题:“酒店”#+i,
秀:假,,
id:我
};
返回ret;
};
$scope.onClick=函数(标记、事件名、模型){
$scope.windowOptions.visible=true;
$scope.selectedHotel=model;
$scope.rating={number:getRandomRating()};
};
$scope.closeWindow=函数(){
$scope.windowOptions.visible=false;
};
$scope.hotels=[];
对于(变量i=0;i<256;i++){
$scope.hotels.push(创建随机标记(i));
}
});
appMaps.directive('评级',
函数(){
返回{
限制:“AE”,
替换:正确,
范围:{
//编号:“=”,
编号:“@”
},
控制器:额定控制器,
//模板:“评级:{{::编号}}”,
模板:功能(远程通信、tAttrs){
返回“评级:”+tAttrs.number+”;
}
};
});
功能分级控制器($scope){
log($scope.number);
}
html,主体,#映射#画布{
身高:100%;
宽度:100%;
边际:0px;
}
#地图画布{
位置:相对位置;
}
.google地图容器{
位置:绝对位置;
排名:0;
底部:0;
右:0;
左:0;
}

{{selectedHotel.title}

也可以发布stars.html的模板?@strom啊是的,完成了。是的,你的答案是正确的。我很想找出原因,但是任何{someData}}类型的数据绑定都是有效的,而以指令方式进行的
'='
的引用绑定是无效的。无论如何,非常感谢,你的提示让我找到了解决办法!
<div class="stars">
    <span ng-repeat="i in getStarsArray() track by $index" class="{{ratingSize}} rating glyphicon glyphicon-star"></span><span ng-repeat="i in getEmptyStarsArray() track by $index" class="{{ratingSize}} rating glyphicon glyphicon-star-empty"></span>
</div>