August 17, 2007

Label function

在原本的template裡面,Label的部份,如果User在"最新文章"那一欄選過下一頁,之後再選擇其他Label的情況時,會出現fetch資料不成功,導致在"最新文章"裡面看到的文章標題都是一樣的東西。

經過檢查.js的程式碼,發現fetch的部份會紀錄一個startIndex作為這一次fetch要開始的地方。因為這是一個全域變數,所以當user按到別的Label之後,startIndex會繼續沿用,所以當某一個Label的文章數沒有那麼多的時候,便沒辦法fetch到資料

舉個例子說明這個情況。假設現在全部的文章有100篇,Label為blog的文章有5篇。一開始startIndex=1,所以可以正常fetch。如果此時user點了"下一頁",則會呼叫fetchOlderPosts。這裡面會把startIndex加上numPosts,假設numPosts=10,則此時startIndex=11。然後下一步User點了blog這個Label,所以fetchPosts(blog),這邊會由startIndex=11開始fetch。但是前面假設Label為blog的文章只有5篇,所以就fetch不到東西,所以這邊畫面上就還是維持在原本的資料的樣子。

這樣應該看得懂吧。

這邊在邏輯上應該是要改成,當user選擇了不同的Label的時候將startIndex回復到預設值

所以,下面我將對neochinese.js的內容做一點點小修改。

1.設定一個全域變數,紀錄上一次的Label。
這個加在檔案一開始全域變數的地方
var oldlabel ="";
2.在fetchPosts的時候,檢查Label如果跟先前的不一樣,就把startIndex設為1,並更新紀錄的Label值。
這個加在function fetchPosts(label)裡面的一開始。
if(label != oldlabel){
  startIndex = 1;
  oldlabel = label;
}

這樣就ok啦,把右邊的標籤雲亂玩弄一番,看起來頗正常的。

YA~hack成功。

07.08.24 後記

剛去看了原作者的blog,發現這一個問題,作者的blog是不會發生的。或者也許他之前就已經發現了也說不定。

原作者的作法是,多加一個fetchLatestPosts的function。這個function在我手上的neo.js裡面是有的,只是長得不太一樣。

作者現在用的fetchLatestPosts長得像下面這樣。
function fetchLatestPosts(label) {
  startIndex = 1;
  fetchPosts(label);
}

然後將template裡面label的按鈕原本是call fetchPosts(label);改為call fetchLatestPosts(label);這樣一樣可以解決上面這個問題,不過大家要改兩個檔案就是了。

BTW,我稍早也想要做那個按下label除了改list之外,也把顯示的文章改成該label的最新一篇文章。不過隨便改一下會怪怪的。等我改出來再Post給大家參考吧。

5 Comments:

好倫 said...

>_<

我看不懂-_-

(javascript文盲)

幫我改

http://nautica716.googlepages.com/myneochinese2.js

先謝謝你了


你要不要把你發現的這個bug回報給ramani??

你真的超強的,之前我是有把我的effect玩壞....但沒想到你可以找出原因來...

台灣的Neo就靠你了~

話說你的neo怎麼沒有permalink?你把它刪了嗎??

Unknown said...

阿...我可以幫你改,但是沒辦法測耶。XD
上面的步驟1放在你的第18行,就是一串var的最後面。
步驟2放在235行,就是 labeltitle.innerHTML = ....的後面。
這樣應該就可以了吧,我放在這邊,萬一不work再跟我說好了。

我也想說要來回報,不過還得找時間用英文重寫一下。

permalink,那天在改排版的時候,覺得他不乖,所以就先把他砍掉了。後來沒改好就忘了再放上去。^^;

好倫 said...

^_^ 謝啦...

等你怨念來的時候看可不可以把"本文標籤"也改出來...

我有改template的

但不會改neo.js的

理論上應該是可以fetch到該文的label吧...

可是我依樣畫葫蘆加上 + label + 時他到是完全不理我...

應該是前面的var什麼的有關吧我猜...

json javascript我全都不懂啦>_<

http://blurkerlab.blogspot.com

http://allen080.blogspot.com/

再加上你...就變成Neo鐵三角哩

好倫 said...

對了

ramani的label很酷

只要按了label

文章也會跟著換

你知道他是怎麼用的嗎??

http://hackosphere.blogspot.com/

你按看看他上面的label

Unknown said...

UpdatePost這個弄出來了,參考這裡

另外那個js產生的'本文標籤'功能,我之前就有想要做了,但是因為我不太會html的語法,而且也不知道文章的label要去哪邊弄出來,所以不知道怎麼寫。不過如果有參考的code的話要移植應該就沒問題啦。再看看吧。