2017-08-06 152 views
0

這裏是我的page.ts錯誤TS2304:找不到名稱 '頁'

page.ts

var viewModel : launchViewModelModule.LaunchViewModel; 
viewModel = new launchViewModelModule.LaunchViewModel(); 

export function navigatingTo(args: observableModule.EventData) { 
    var page = <pageModule.Page>args.object; 
    page.bindingContext = viewModel; 
    } 
function showLoginPageForm(slow){ 
       var initialContainer = page.getViewById("initial-container"); 
       var mainContainer = page.getViewById("container"); 
       var containerLogo = page.getViewById("container-logo"); 
    } 

的showLoginPageForm內的另一個本地函數的page.ts文件顯示

error TS2304: Cannot find name 'page' 

我不知道我錯過了什麼

回答

0

我找到了解決辦法,在已經與nativescript-打字稿做一個項目採取後一看

var viewModel : launchViewModelModule.LaunchViewModel; 
viewModel = new launchViewModelModule.LaunchViewModel(); 

let initialContainer: StackLayout; 
let mainContainer: StackLayout; 
let containerLogo: AbsoluteLayout; 


export function navigatingTo(args: observableModule.EventData) { 
    var page = <pageModule.Page>args.object; 
    page.bindingContext = viewModel; 

    initialContainer = <StackLayout>page.getViewById("initial-container"); 
    mainContainer = <StackLayout>page.getViewById("container"); 
    containerLogo = <AbsoluteLayout>page.getViewById("container-logo"); 
    runAnimation();  
} 

然後從這裏呼叫功能,例如showLoginPageForm()可以訪問initialContainer.animate()所有屬性和方法屬於您要使用的對象。謝謝@Kirby

0

可變page被定義爲功能navigatingTo內的局部變量,並且對功能showLoginPageForm不可見。

也許你想聲明page以外的功能,以便它們都可以看到它們。

+0

謝謝@Kirby但是如果我應該在外面聲明它,我將無法訪問TypeView ViewBase的getViewById()方法。這工作正常與nativescript香草,但失敗的本地腳本打字稿工作 – Muhammed

1

如果您在本地函數中需要全局變量,則應考慮使用函數參數或基於類的對象。

類基礎的解決方案(只要我可以調用它的解決方案)

class Navigator { 

    protected page: pageModule.Page; 
    protected viewModel: launchViewModelModule.LaunchViewModel; 

    constructor(viewModel: launchViewModelModule.LaunchViewModel) { 
     this.viewModel = viewModel; 
    } 

    public navigateTo(args: observableModule.EventData): void { 

     this.page = args.object as pageModule.Page; 
     this.page.bindingContext = viewModel; 
    } 

    public showLoginPageForm(slow) { 

     const initialContainer = this.page.getViewById("initial-container"); 
     const mainContainer = this.page.getViewById("container"); 
     const containerLogo = this.page.getViewById("container-logo"); 
    } 
} 
+0

我必須導出Navigator類,因爲我的XML文件不讀取navigationTo方法 – Muhammed

+0

我不知道你願意做什麼這個XML文件和導航類。你可以開一個新的問題,告訴我們你想做什麼。 xml文件。否則,請給我一個你的問題的簡要概述。 我認爲你的問題:你應該導出導航類,以便在另一個文件中使用它。比使用'new'關鍵字實例化這個對象並且執行函數'navigateTo(...)'。我會建議使用[Singleton設計模式](http://amanvirk.me/singleton-classes-in-es6/) – Wartoshika

相關問題