ayarlanırken undefined özelliği 'apply' okunamıyor, bir angularjs uygulamasında ngMap kullanıyorum. Yakınlaştırmayı harita öğesinde ayarladığımda bir hatayla karşılaşıyorum. İşte Krom konsolundan hata mesajı yok:ng-map: Zum değeri
TypeError: Cannot read property 'apply' of undefined
at Wk.eventFunc (ng-map.js:205)
at Object.T.trigger (main.js:18)
at kf (main.js:22)
at Wk.N.set (main.js:21)
at Wk.setZoom (main.js:29)
at ng-map.js:1568
at angular.js:6837
at forEach (angular.js:323)
at Object.$get.Attributes.$set (angular.js:6835)
at interpolateFnWatchAction (angular.js:8157)
benim haritası elemanının yakınlaştırma niteliği, bu tetiklediği:
app.controller("mapCtrl", function ($scope, $location, dataContext) {
$scope.markers = [];
$scope.initCenter = dataContext.center();
$scope.zoom = dataContext.zoom();
:
<map center="{{initCenter.lat}}, {{initCenter.lng}}" zoom="{{zoom}}" on-dragend="dragend()" on-zoom_changed="zoomchanged()">
benim açısal denetleyiciye bağlı ediliyor
dataContext, uygulamadaki çeşitli durum değişkenlerini gösteren bir hizmettir. Aynı işlev hatasıyla bir işlev üzerinden $ scope.zoom ayarlamayı da denedim.
hata ng-map.js dosyasının hattı 1568 gerçekleşir: Ben merkezini ayarlamak için yürütme ardından neler oluyor aracılığıyla iz çalışırken ve zoom ayarı için
var observeAndSet = function(attrs, attrName, object) {
attrs.$observe(attrName, function(val) {
if (val) {
void 0;
var setMethod = parser.camelCase('set-'+attrName);
var optionValue = parser.toOptionValue(val, {key: attrName});
void 0;
if (object[setMethod]) { //if set method does exist
/* if an location is being observed */
if (attrName.match(/center|position/) &&
typeof optionValue == 'string') {
_this.getGeoLocation(optionValue).then(function(latlng) {
object[setMethod](latlng);
});
} else {
// this is the line that causes the problem
object[setMethod](optionValue);
}
}
}
});
};
(ayar merkezi kokan bir soruna neden olmak). Merkezin ayarlanması, hat 1568'i yürütür ve mutlu bir şekilde devam eder. (SetZoom fonksiyonu ile)
Ayar yakınlaştırma yürütmek için ng-map.js hat 196 no'lu kodu neden olur:
var eventFunc = function(attrValue) {
var matches = attrValue.match(/([^\(]+)\(([^\)]*)\)/);
var funcName = matches[1];
var argsStr = matches[2].replace(/event[ ,]*/,''); //remove string 'event'
var args = scope.$eval("["+argsStr+"]");
return function(event) {
function index(obj,i) {return obj[i];}
var f = funcName.split('.').reduce(index, scope);
// this next line causes an exception in google map main.js
f.apply(this, [event].concat(args));
scope.$apply();
}
}
Hat 205 google haritanın main.js içindeki hata ile sonuçlanır istisna yol açar dosya.
Bunun nedenine dair bir fikriniz var mı? Ve nasıl çözülür :)?
bu ile oynamak Olası Çözüm
biraz daha ben soruna neden yakınlaştırma düzeyini kendi başına kurmadığını fark ettik. Bu, aslında> < <'dan sonra zoom değiştirilen olayın sonucudur.
var f = funcName.split('.').reduce(index, scope);
null değerlendirir:
ilk kez yakınlaştırma haritası, çizgi 204 üzerinde ayarlanır. Neden olduğundan emin değilim, çünkü o çizginin ne yaptığını anlamıyorum. Ancak, gelecekteki yakınlaştırma değişiklikleri, f için aynı olmayan bir değere 204 karar veren aynı çizgiye sahiptir.
Yani, geçici bir çözüm olarak, ben çizgileri böyle 205 ve 206 parantez:
if (f != null) {
f.apply(this, [event].concat(args));
scope.$apply();
}
ve hata gitti.