2012-05-16 70 views
0

在我的類PostsPager的構造函數中,我將默認值@page設置爲0,然後調用render。但是,當我輸入渲染時,@page現在是未定義的。爲什麼會這樣?coffeescript實例變量undefined

class PostsPager 
    contructor: (@page=0)-> 
    render() 
    $(window).scroll(@check) 

    check: => 
    if @nearBottom() 
     @render 

    render: => 
    alert @page # @page = undefined 

編輯

編譯JS

PostsPager = (function() { 

    function PostsPager() { 
     this.renderPosts = __bind(this.renderPosts, this); 

     this.nearBottom = __bind(this.nearBottom, this); 

     this.render = __bind(this.render, this); 

     this.check = __bind(this.check, this); 

    } 

    PostsPager.prototype.contructor = function(page) { 
     this.page = page != null ? page : 0; 
     this.render(); 
     return $(window).scroll(this.check); 
    }; 

    PostsPager.prototype.check = function() { 
     if (this.nearBottom()) { 
     return this.render; 
     } 
    }; 

    PostsPager.prototype.render = function() { 
     alert(this.page); 
     this.page++; 
     $(window).unbind('scroll', this.check); 
     return $.getJSON($('#feed').data('json-url'), { 
     page: this.page 
     }, this.renderPosts); 
    }; 
+0

'new PostsPager()' – Chris

回答

1

你有拼寫差,constructor是類的構造方法,contructor只是拼寫不佳方式。您還需要說@render()撥打render作爲this的方法。你想:

class PostsPager 
    constructor: (@page=0)-> 
    @render() 
    #... 

演示:http://jsfiddle.net/ambiguous/eaQdv/

這拼寫錯誤意味着你contructor從來沒有所謂的,這就是爲什麼你從來沒有看到有關的錯誤「未知渲染變量」,將被丟失@引起。

+1

那麼,這是我的職業生涯。 – Chris

+0

謝謝你接觸 – Chris

+0

@Chris:沒什麼,只是等到你開始製作真正的mistaeks :) –