knockout.js复杂可观察?

时间:2013-09-09 23:58:38

标签: knockout.js observable

我有以下型号

var ViewModel = function(){
    var self = this;
    self.appointment = {
        title: ko.observable(),
        description: ko.observable(),
        time: ko.observable(),
        address1: ko.observable(),
        address2: ko.observable(),
        phone: ko.observable(),
        email: ko.observable(),
     }
);

然后由json数据映射,这将生成一个名为appointment_set

的约会预约项目

我有一个绑定到模型的约会元素的视图,但是当我使用observableArray中的元素设置appointment元素时,视图将不会使用值更新,请参见下文:

viewmodel.appointment = viemodel.appointment_set()[0];

我认为这是因为appointment本身不可观察,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

根据@ user2246674的评论,我将其更改为:

var ViewModel = function(){
    var self = this;
    self.appointment = ko.observable({
        title: ko.observable(),
        description: ko.observable(),
        time: ko.observable(),
        address1: ko.observable(),
        address2: ko.observable(),
        phone: ko.observable(),
        email: ko.observable(),
     });
);

然后将约会设置为:

viewmodel.appointment(viewmodel.appointment_set()[0]);

答案 1 :(得分:0)

var ViewModel = function(){
var self = this;
self.appointment = observableArray({
    title: ko.observable(),
    description: ko.observable(),
    time: ko.observable(),
    address1: ko.observable(),
    address2: ko.observable(),
    phone: ko.observable(),
    email: ko.observable(),
 });
};

如果要使用以下行,请将其用作observableArray:

 viewmodel.appointment(viemodel.appointment_set()[0]);

因为对于一个可观察的对象你不能说'[0]'...它只在你处理observableArray时使用。

还要确保约会也被声明为observableArray。

self.appointment=ko.observableArray();

希望这可能会对你有所帮助......我只是从我所知道的内容中说出来......如果我错了,请原谅我。