Вопрос по – отображение нокаута с вычисляемыми полями

5

Я получаю данные из службы WCF, сопоставляю и связываю данные с моим объектом DOM:

var PayinyVM = {};

    $.getJSON('/service/PaidService.svc/PaidList', function (data) {
        var tmp = JSON.stringify(data.d);

        PayinyVM.model = ko.mapping.fromJSON(tmp);
        ko.applyBindings(PayinyVM);
    }); 

результат показан как исключение на моей DOM привязать его к модели. То, что я не смог выяснить, - это как добавить некоторые вычисляемые наблюдаемые, скажем, мои данные возвращают людей с FirstName и LastName, как я могу сделать вычисляемое наблюдаемое FullName с FN + ». & APOS; + LN.

Ваш Ответ

3   ответа
4

создав объект модели, который отображается внутри.

var PayinyVM = function (data) {
    var self = this;
    ko.mapping.fromJS(data, {}, self);
    this.fullName = ko.computed(function () {
        return self.Name() + " : just ";
    });
};

$.getJSON('/service/PaidService.svc/PaidList', function (data) {    
    ko.applyBindings(new PayinyVM(data.d));
});

Надеюсь это поможет.

Error: User Rate Limit Exceeded Frenchi In LA
jsfiddle.net/nYF67Error: User Rate Limit Exceeded Frenchi In LA
Error: User Rate Limit Exceeded Frenchi In LA
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Frenchi In LA
2

мне нужно определить все свойства модели представления внутри javascript, чтобы нокаут мог инициализировать модель представления со свойствами, прежде чем обновлять ее данными сервера

Ссылка:http://www.underwatergorilladome.com/how-to-use-knockouts-computed-observables-with-the-mapping-plugin/

http://jsfiddle.net/GLDxx/2/

var model = {
    username : ko.observable(),
    get_student_info : ko.mapping.fromJS(
        {
            usr_lname : null,
            usr_fname : null,
            gender : null,
            dob : null
        },
        {
            create: function(options) {
                return (new (function () {
                    this.name = ko.computed(function () {
                        if (this.usr_lname == undefined || this.usr_fname == undefined)
                            return null;
                        else
                            return this.usr_lname() + ' ' + this.usr_fname(); 
                    }, this);

                    // let the ko mapping plugin continue to map out this object, so the rest of it will be observable
                    ko.mapping.fromJS(options.data, {}, this);
                }));
            }
        }
    )
};
Error: User Rate Limit Exceeded
9

мне пришлось сделать много предположений, поскольку ваша скрипка не была даже правильной javascript и выглядела довольно смущенной и даже не ссылалась на нокаут

var PaidPeople = function(data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);
    this.fullName = ko.computed(function () {
                    return self.Name() + " : just ";
                });
}

var PayinyVM = function (data) {
                var self = this;

                ko.mapping.fromJS(data, {
                    'model' : {
                        create: function(options) {
                            return new PaidPeople(options.data);
                    }                        
                  }
                }, self);                
            };

var data = {model:[{__type: "PaidPeople:#model", Amount:110, Attendee:1, Name:'John'}]};

ko.applyBindings(new PayinyVM(data)); ​

и скрипка, которая работает:http://jsfiddle.net/qeUHd/

Error: User Rate Limit Exceededjsfiddle.net/nYF67 Frenchi In LA
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Frenchi In LA
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы