2015-11-08 32 views
5

我正在使用angularjs-google-maps,並且在試圖將我的客戶作爲地圖上的標記進行循環播放時出現錯誤。

<map> 
    <custom-marker ng-repeat="cust in customers" position="[ {{ cust.lat }}, {{ cust.lon }} ]"> 
    <div class="{{ cust.category }}">{{ cust.name }}</div> 
    </custom-marker> 
</map> 

的錯誤似乎有事情做與cust.categorycust.name,當我刪除這些,他們工作得很好。

這是錯誤消息我得到的第幾行:

Watchers fired in the last 5 iterations: [["[ cust.category , cust.name ]; newVal: 
[\"pro\",\"Fred\"]; oldVal: [\"pro\",\"Fred\"]","fn: function (context) {\n   
try {\n for(var i = 0, ii = length, part; i<ii; i++) {\n 

完整的錯誤消息here

任何與此有關的幫助表示讚賞。提前致謝!

UPDATE

代碼爲自定義標記指令,是角谷歌,地圖的部分here

+0

@realpha,請問您能否顯示您的數據?什麼是cust.category的數據類型? –

+1

你可以設置你的問題的jsfiddle嗎? – jjbskir

+0

@AbhilashPA'cust.category'是一個字符串,與'cust.name'一樣。兩者都存在於一個對象內。 – realph

回答

1

看起來像摘要循環卡在一個循環。 Angular有一個摘要循環,他們觀察模型(無論是否在$範圍內),並在模型更改時對視圖應用更改。如果在摘要循環中執行某個函數以再次更改值,則會觸發另一個摘要循環,該循環會再次觸發相同的函數,更改模型中的值並觸發無限循環的摘要循環。

也就是說,您可能想要爲customMarker指令添加代碼以獲得更精確的答案。

+0

嗯。不知道爲什麼會這樣。我已經更新了我的問題,並鏈接到了angular-google-maps回購的自定義標記指令代碼。 – realph

+0

根據文檔,這似乎是'爲什麼會拋出此錯誤?'這個問題的正確答案。https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest –

0

爲什麼你綁定class =「{{cust.category}}」,嘗試使用ng-class。你也可以使用ng-repeat中的$ index來追蹤track.I在運行我的離子應用時出現這個錯誤ios9。他們發佈了一個補丁來解決這個問題。

0

這樣的代碼:

scope.$watch('[' + varsToWatch.join(',') + ']'... 

看起來像連接後"[obj1.prop, obj2.prop]"
表達式類似於$parse解析的那樣,並且會導致在每次迭代中將自我評估爲數組的新實例,即使內部沒有任何更改。

你應該插/呼叫$watch之前分析它,並寫了條件,從而改變只比的相關數據確實發生了變化。


$watchfunction(watchExp, listener, objectEquality, prettyPrintExpression)
你可以嘗試使用第三個參數(objectEquality)的值來比較數組,而不是由引用相等。

@param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of comparing for reference equality. 
相關問題