1
這是非常基本的,但我花了數小時的時間試圖弄清楚爲什麼我無法使用Handlebars的內置#if模板的#each循環內的#if助手。我插入到{{#如果}},Chrome瀏覽器(或Safari)崩潰和控制檯報告的參考。第二:在我的Handlebars模板的#each循環中#if的任何使用都會導致瀏覽器頁面崩潰
Uncaught RangeError: Maximum call stack size exceeded
meta
targetSetFor
sendEvent
Ember.Evented.Ember.Mixin.create.trigger
Ember.CoreView.Ember.Object.extend.trigger
newFunc
(anonymous function)
Ember.View.Ember.CoreView.extend.invokeRecursively
newFunc
(重複多次)
這是爲什麼害我在遞歸故障餘燼?
<div id="gridChannelListDiv" tabindex="0">
{{#each item in content}}
{{#if item.hilight}}
<div class="gridCellHilight">
...
</div>
{{else}}
<div class="gridCell">
...
</div>
{{/if}}
{{/each}}
</div>
即使{{#if}}語句不執行任何操作,也會發生這種情況。
<div id="gridChannelListDiv" tabindex="0">
{{#each item in content}}
{{#if}}{{/if}} // this line will cause instant "oh snap" crash
<div class="gridCell">
{{item.name}}
</div>
{{/each}}
</div>
相關的ArrayController包含5個灰燼對象的簡單列表中的「內容」和模板,做工精細,直到我插入的#if。 擋板。
非常感謝。這有助於爲我縮小範圍。我會繼續調查...有一個機會,你最初的猜測是正確的 - 我加入的團隊正在使用一些庫,這些庫有幾個版本 - 也許他們只是壞了。謝謝。 – 2013-03-19 15:43:30
這裏有一些猜測,因爲我們沒有確定地確定發生了什麼,但看起來這可能是由於動態加載和編譯模板文件以及在我們的視圖中對模板有過時的硬編碼引用。不知何故,我認爲這在某些情況下建立了一個遞歸循環,但是爲什麼#if會觸發它,不清楚,但是在移除對模板的硬編碼引用之後,事情似乎按預期行事。 – 2013-03-19 21:31:37