1
我在Knockout.js中遇到了多個ViewModel的問題。 綁定有效,但當出現應顯示用戶可觀察文本的消息框時,它始終寫入「未定義」。Knockout observables中的多個ViewModel
任何人都知道我的問題是帽子?
<!-- ko template: { 'if': loginVM, data: loginVM } -->
<h3>This is the login</h3>
User <input type="value: user" type="text"><br/>
Password <input type="value: password" type="text"><br/>
<button data-bind="click: showDetails">Show Details</button>
<!-- /ko -->
<!-- ko template: { 'if': detailsVM, data: detailsVM } -->
<h1>These are the details</h1>
<button data-bind="click: showLogin">Show Login</button>
<!-- /ko -->
var masterViewModel = {
loginVM: ko.observable(),
detailsVM: ko.observable()
};
var LoginVM = function() {
this.user=ko.observable();
this.password= ko.observable();
this.showDetails = function() {
alert(this.user());
if(this.user() == "Gregor")
{
masterViewModel.loginVM(null);
masterViewModel.detailsVM(new DetailsVM());
}
};
};
var DetailsVM = function() {
this.showLogin = function() {
masterViewModel.loginVM(new LoginVM());
masterViewModel.detailsVM(null);
};
};
masterViewModel.loginVM(new LoginVM());
ko.applyBindings(masterViewModel);
這裏也是一個js.fiddle: http://jsfiddle.net/4A87x/1/
同樣的是一個更好的結合在這裏,因爲你使用內聯模板反正http://jsfiddle.net/4A87x/6/ – Anders
我現在面臨另一個小問題! 如果我點擊我的DetailsVM中的showStart按鈕,我必須點擊兩次以隱藏DetialsVM! http://jsfiddle.net/4A87x/9/ – Greg
@Greg:我重構了你的代碼。對我來說這種方式似乎更好。它的工作原理。希望它有幫助:http://jsfiddle.net/4A87x/13/ – Stefan