2014-10-29 87 views
0
var barcodeNum = ko.observable(""); 

VelocityMeetings.scan = function (params) { 

var errorMessage = ko.observable(""); 

var viewModel = { 
    errorMessage: errorMessage, 
    scannumber: ko.observable(""), 
    errorVisible: ko.computed(function() { 
     return errorMessage().length != 0; 
    }), 
    scanBarcode: function() { 
     //Capture image with device and process into barcode 
     capturePhoto(); 

     this.scannumber(barcodeNum()); 
     //this.errorMessage(errMessage); 
    }, 
}; 


return viewModel; 
}; 

我有在视图模型外部创建的barcodeNum变量,试图将数据传回scannumber变量。如何访问在视图模型中定义的变量?淘汰赛交叉视图模型

我们的目标是使用javascript Worker来更新scannumber,它将相应地更新我的应用程序,但我无法使其正常工作。

function receiveMessage(e) { 
    barcodeNum("Test function"); 
} 

var DecodeWorker = new Worker("js/BarcodeScanner.js"); 
DecodeWorker.onmessage = receiveMessage; 

的目标是沿此

VelocityMeetings.scan.viewModel.scannumber(barcodeNum()); 

线的东西,但是这个心不是正常

回答

0

我发现这个问题我自己

scannumber: ko.observable(""), 

scannumber可以被定义为ko.com的返回值是barcodeNum(),这将对barcodeNum做出任何更改到scannumber()

这里是我的计算

scannumber: ko.computed(function() { return barcodeNum(); },this), 
1

当你发现自己有互相沟通独立的视图模型,可考虑使用knockout-postbox。如果您愿意,您可以单向或双向进行沟通。就你而言,我认为单向沟通就足够了。

var barcodeNum = ko.observable('').publishOn('barcodeNum'); 

var viewModel = { 
    scannumber: ko.observable().subscribeTo('barcodeNum'), 
    // ... 
};