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