1

私はKnockoutjsが初めてです。名前、値、および履歴変数を持つ非常に単純なモデルがあります。いくつかのアプローチを試しましたが、履歴を 1 回以上更新することはできません。ほとんどのアプローチは、スコープ アクセスの問題で失敗しました。私が言ったように、私はノックアウトが初めてです。問題をよく説明するこのFiddleも含めました。

this.tlmname = ko.observable();
this.tlmval = ko.observable();
this.history = ko.observableArray();


var telemItem = function (data) {

     this.tlmname = ko.observable();
     this.tlmval = ko.observable();
     this.history = ko.observableArray();
     this.update(data);

 };

ko.utils.extend(telemItem.prototype, {

     update: function(data) {


         this.tlmname(data.tlmname|| "Cheese");
         this.tlmval(data.tlmval || 0);
         this.history.push(data.tlmval);

         if (this.history().length > 50) this.history.shift();

     }

 });

var telemetryViewModel = function(telemVars) {

    this.telemVars = ko.observableArray(ko.utils.arrayMap(telemVars, function(data) {
            return new telemItem(data);
        }));

function UpdateModel( modelView ) {

    $.getJSON('/gtr/tests/ko/requestTelemetry.php', 
    function(data)
    {
        //modelView.telemVars(data.telemVars);
        //modelView(data.telemVars);

        modelView.update(data.telemVars);
        modelView.telemVarsDirect( getDirectVM( data.telemVars ) );

    }               
)};
4

0 に答える 0