2015-07-21 87 views
2

我是一個AngularJS新手,我正在嘗試編寫一些基於AngularJS的Plone插件。Plone和AngularJS路由

我遇到並不真正知道如何避免的問題是關於路由。

所以,說,我有一些Plone的URL,即http://localhost/blah/my_page

本頁面使用AngularJS和路由。 點擊一些Angular託管按鈕,用戶將獲得http://localhost/blah/my_page#/angular_page 並且功能正常工作。

這個工作,但只有刷新。當有人試圖刷新http://localhost/blah/my_page#/angular_page Plone的jQuery開始抱怨。

也就是說,它會引發語法錯誤plone.app.jquery(1.7.2版本),如下:

Uncaught Error: Syntax error, unrecognized expression: #/angular_page 
    m.error @ ++resource++plone.app.jquery.js:3 
    m.filter @ ++resource++plone.app.jquery.js:3 
    m @ ++resource++plone.app.jquery.js:3 
    c.querySelectorAll.m @ ++resource++plone.app.jquery.js:3 
    f.fn.extend.find @ ++resource++plone.app.jquery.js:3 
    (anonymous function) @ form_tabbing.js:166 
    e.extend.each @ ++resource++plone.app.jquery.js:2 
    e.fn.e.each @ ++resource++plone.app.jquery.js:2 
    $.fn.ploneTabInit @ form_tabbing.js:157 
    ploneFormTabbing.initialize @ form_tabbing.js:174 
    (anonymous function) @ form_tabbing.js:179 
    f.Callbacks.o @ ++resource++plone.app.jquery.js:2 
    f.Callbacks.p.fireWith @ ++resource++plone.app.jquery.js:2 
    e.extend.ready @ ++resource++plone.app.jquery.js:2 
    c.addEventListener.B @ ++resource++plone.app.jquery.js:2 

Plone的jQuery的似乎驗證URL和角的部分不匹配。

避免此問題的最佳方法是什麼? 感謝您的幫助。

回答

2

爲了防止任何人遇到同樣的問題,我終於找到了解決方案。

的問題的根本原因是在form_tabbing.js文件,並在功能ploneTabInit以下代碼:

var targetPane = item.find('.enableFormTabbing input[name="fieldset"]').val() || window.location.hash; 
    if (targetPane) { 
     item.find(".enableFormTabbing .formTabs " + 
     targetPane.replace("'", "").replace(/^#fieldset-/, "#fieldsetlegend-")).click(); 
    } 

window.location.hash被分配到targetPane,因此該問題。 它使用jQuery的Sizzle搜索引擎觸發了這個值的搜索。 像$('#/something')這樣的搜索會引發語法錯誤。

在此特定視圖中禁用form_tabbing.js對我來說已經足夠。