2015-06-19 62 views
0

代碼位於typescript中,我試圖在頁面加載中顯示當前日期時間,並在刷新點擊時更新該日期時間。刷新函數中的Knockout Observable字符串更新

在.ts文件中顯示日期時間的字符串是這樣聲明的。

asOfString: KnockoutObservable<string>; 

在它被設置這樣的構造,

this.asOfString = ko.observable(new Date().toDateString() + " " + new Date().toLocaleTimeString()); 

在HTML中它是這樣的綁定,

  <a class="small button" data-bind="click: updateSummary">Refresh</a> 

在刷新按鈕,我試圖更新它像這個,

this.asOfString(new Date().toDateString() + " " + new Date().toLocaleTimeString()); //latest date time. 

it gi給我一個錯誤,_this.asOfString不是一個函數。

請幫忙。視圖模型的

代碼是這樣的,

import ko = require('knockout'); 

class TodayViewModel { 
    asOfString: KnockoutObservable<string>; 

    constructor() { 
     this.updateSummary(); 

     this.asOfString = ko.observable(new Date().toDateString() + " " + new Date().toLocaleTimeString()); 
    } 

    updateSummary =() => { // is the function that is bound to refresh button 
     //want to update this.asOfString here 
    } 
} 

export = TodayViewModel; 
+0

我們需要看到更多的代碼,當你更新它(得到的'價值this'是什麼的想法)。發佈您如何定義視圖模型,如何在視圖模型上定義asOfString,以及如何在視圖模型上定義updateSummary。此外,確保'asOfString'不被任何可觀察的東西覆蓋。 –

+0

聽起來像一個錯誤的'this'。在點擊綁定中使用的'updateSummary'函數將(默認情況下)** not **與您的視圖模型一起調用,因爲'this'' – CrimsonChris

+0

已更新問題。 –

回答

0

這對我的作品精細,因爲整個應用程序。我不能說出我所做的與你所描述的有什麼不同,所以我只包括了整個事情。

class TodayVM { 
    asOfString: KnockoutObservable<string>; 

    constructor() { 
     this.asOfString = ko.observable(''); 
     this.updateSummary(); 
    } 
    updateSummary =() => { 
     this.asOfString(new Date().toDateString() + " " + new Date().toLocaleTimeString()) 
    } 
} 

window.onload =() => { 
    ko.applyBindings(new TodayVM()); 
}; 

HTML:

<!DOCTYPE html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>TypeScript HTML App</title> 
    <link rel="stylesheet" href="app.css" type="text/css" /> 
    <script src="app.js"></script> 
</head> 
<body> 
    <h1>TypeScript HTML App</h1> 

    <div data-bind="text:asOfString"></div> 
    <button data-bind="click:updateSummary">Update</button> 
</body> 
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script> 
</html> 
+0

謝謝你它的工作! –

+1

主要區別在於,在分配給this.asOfString之前調用了this.updateSummary();。 –

相關問題