2011-12-09 75 views
0

我從Silverlight到Knockout.js。當我在Silverlight創建的ViewModels,我會時常有這樣的事情:在視圖模型中使用自定義對象Knockout

public class MyViewModel : ViewModel 
{ 
    private MyCustomClass custom = null; 
    public MyCustomClass Custom 
    { 
    get { return custom; } 
    set { custom = value; 
     NotifyPropertyChanged("MyCustomClass"); 
    } 
    } 
} 

<TextBox Text="{Binding Path=Custom.PropertyName, Mode=TwoWay}" /> 

但是,我不知道該怎麼辦了這樣的事情在Knockout.js。目前,我有:

<input type="text" data-bind="value:propertyName" /> 

var viewModel = { 
    custom: { 
    propertyName:"" 
    } 
} 

回答

1

可以肯定你是什麼都沒有,但是你想,除非你使用模板或with在KO 1.3結合已經改變上下文custom綁定到value: custom.propertyName

做到這一點的典型方法是爲喜歡你的自定義對象創建構造函數:

var Person = function(first, last) { 
    this.first = ko.observable(first); 
    this.last = ko.observable(last); 
}; 

var viewModel = { 
    people: ko.observableArray([ 
    new Person("Bob", "Smith"), 
    new Person("Ted", "Jones") 
    ]) 
}; 
相關問題