2012-11-15 72 views
1

我有以下代码,我尝试用一​​个名为Modal的类替换createModal。然而,当我尝试这个打字稿给我的错误,并表示,“链接不会在当前范围中不存在”:如何在类函数内部访问类变量?

module Admin.MyAccount.Access { 

    export function createModal(link: Link) { 
     link.Modal.$Modal = $.modal({ 
      resizeOnLoad: true 
     }); 
     link.Modal.$Modal.applyTemplateSetup() 
    } 

    export class Modal { 
     link: Link; 
     constructor (link: Link) { 
      this.link = link; 
     } 
     create() { 
      link.Modal.$Modal = $.modal({  // < Error here 
       resizeOnLoad: true 
      }); 
      link.Modal.$Modal.applyTemplateSetup() // < Error here 
     } 

    } 

} 

当我使用的功能我调用该函数是这样的:

 createModal(link); 

我在这里做错了什么?为什么我无法访问create()中的链接?我也可以用静态函数来做到这一点。这样做会更容易一些,因为我不需要呼叫新建Modal的新实例?

+0

难道你不应该只是添加**这**链接? this.link – Kao

+0

@Kao - 谢谢你是对的。至于我的问题的第二部分。使这个静态类有什么好处吗? –

回答

1

您需要将this添加到调用中,因为您需要访问类作用域。


只要选择它或不使用 static归结为你如何使用该对象。你有多个对象的实例,但只需要它的一个副本?如果是这样,请使用 static

这意味着你所有的模态将被连接在一起,并且总是只能有一个。

Using static in javascript

静态函数(即只有一个功能的副本没有 无论你创建多少个对象),可用于公用 功能真正派上用场。

+0

感谢您的帮助。 –