2012-12-17 1 views
4

방금 ​​KnockOut.js 튜토리얼을 실행했지만 JS 코드를 TS로 바꿉니다. SammyJS를 추가 할 때 다음 코드에 붙어 있습니다. 아무도 TS에서 새미 함수 코드를 어떻게 조언 할 수 있습니까?TypeScript를 사용하여 Sammy js 설정을 선언하십시오.

function WebmailViewModel() { 
// Data 
var self = this; 
self.folders = ['Inbox', 'Archive', 'Sent', 'Spam']; 
self.chosenFolderId = ko.observable(); 
self.chosenFolderData = ko.observable(); 
self.chosenMailData = ko.observable(); 

// Behaviours  
self.goToFolder = function(folder) { location.hash = folder }; 
self.goToMail = function(mail) { location.hash = mail.folder + '/' + mail.id }; 

// Client-side routes  
Sammy(function() { 
    this.get('#:folder', function() { 
     self.chosenFolderId(this.params.folder); 
     self.chosenMailData(null); 
     $.get("/mail", { folder: this.params.folder }, self.chosenFolderData); 
    }); 

    this.get('#:folder/:mailId', function() { 
     self.chosenFolderId(this.params.folder); 
     self.chosenFolderData(null); 
     $.get("/mail", { mailId: this.params.mailId }, self.chosenMailData); 
    }); 

    this.get('', function() { this.app.runRoute('get', '#Inbox') }); 
}).run();  
}; 

ko.applyBindings(new WebmailViewModel()); 

내가 다음 오전 튜토리얼이 귀하의 질문에 응답하면 잘 모르겠어요 여기 http://learn.knockoutjs.com/#/?tutorial=webmail

감사

+0

글쎄, 나는 이것으로 인해 매우 도움이 될 미래의 방문자입니다! 저자가 강조한 내용에 비추어 질문을 고려해야한다고 제안합니다. "누구든지 TS에서 새미 함수 코드를 어떻게 조언 할 수 있습니까?" –

+0

나는 이것에 대한 답변을 원합니다. – Kieran

답변

1

,하지만 당신은 잠재적으로 여기 https://github.com/borisyankov/DefinitelyTyped/blob/master/sammyjs/sammyjs.d.ts이를 새미를 설명하는 타이프 라이터 정의 파일을 활용할 수 있습니다 자습서를 계속 진행하려면 새미 API가 충분해야합니다.

정의 파일과 참조를 아래와 비슷한 특수한 설명과 함께 다운로드하십시오.

///<reference path="sammyjs/sammyjs.d.ts" /> 
0

나는이 오래된 질문이다 알지만, 이것은 미래 방문자를 위해 추천을 보증하기 위해 나에게 충분히 통증을 유발했다.

위의 예제 코드를 TypeScript에 다시 작성했습니다.

/// <reference path="../Scripts/typings/jquery/jquery.d.ts" /> 
/// <reference path="../Scripts/typings/Sammy/Sammy.d.ts" /> 
import sammy = require("sammy"); 
class WebmailViewModel 
{ 
    // Data 
    public folders: Array<string> = ['Inbox', 'Archive', 'Sent', 'Spam']; 
    public chosenFolderId: KnockoutObservable<any> = ko.observable(); 
    public chosenFolderData: KnockoutObservable<any> = ko.observable(); 
    public chosenMailData: KnockoutObservable<any> = ko.observable(); 

    // Behaviours  
    public goToFolder = function (folder) { window.location.hash = folder }; 
    public goToMail = function (mail) { window.location.hash = mail.folder + '/' + mail.id }; 

    // Client-side routes  
    public SammyApp: sammy.Application = 
    Sammy().get('#:folder', context => 
    { 
     this.chosenFolderId(context.params.folder); 
     this.chosenMailData(null); 
     $.get("/mail", { folder: context.params.folder }, this.chosenFolderData); 
    }).get('#:folder/:mailId', context => 
    { 
     this.chosenFolderId(context.params.folder); 
     this.chosenFolderData(null); 
     $.get("/mail", { mailId: context.params.mailId }, this.chosenMailData); 
    }).get('', context => 
    { 
     context.app.runRoute('get', '#Inbox'); 
    }).run(); 
}; 

그런 다음, $에서 (문서) .ready() 그 대답 stack overflow question 19395335 @Vladimir에

var viewModel = new WebmailViewModel; 
ko.applyBindings(viewModel); 

많은 감사 솔루션에 저를지도한다.

건배.

관련 문제