2017-02-03 59 views
1

我正在使用MVC核心Web應用程序Knockout。在我的UI中,我有幾個輸入文本字段。例如FirstName,LastName和FullName。Knockout JS Computed Observable也需要用戶輸入

我正在將FullName計算爲observable。這是我的問題。 案例1:基於某些條件,我想使用FirstName和LastName數據來計算FullName。 (這是例子中顯示的通常情況)。情況2:基於某些條件,我想讀取用戶可以在FullName文本字段中輸入的輸入。有人能幫助我,我怎麼能做到這一點。

function AppViewModel() { 
this.firstName = ko.observable('Bob'); 
this.lastName = ko.observable('Smith'); 

if(somecondition) 
this.fullName = ko.computed(function() { 
    return this.firstName() + " " + this.lastName(); 
} else { 
    return somevalueEnterned in the text box 

},this); }

回答

1

沒有理由不能把你的邏輯放入計算機本身。爲文本框綁定使用單獨的observable,然後根據您的條件返回一個或另一個。

function AppViewModel() { 
    this.firstName = ko.observable('Bob'); 
    this.lastName = ko.observable('Smith'); 
    this.textBoxValue = ko.observable(''); 

    this.fullName = ko.computed(function() { 
    if(somecondition) 
     return this.firstName() + " " + this.lastName(); 
    } else { 
     return this.textBoxValue(); 
    } 
    }, this); 

} 
+0

非常感謝Jason Spake。這是一種黑客,但它的工作。 –