【发布时间】:2015-07-29 00:56:35
【问题描述】:
上下文和设计概述
我正在使用一个名为 Tiff.js 的库在网页上加载 Tiff 图像。我在服务器和客户端上使用库。在我的服务器中,我使用该库从服务器上的 Tiff 文件创建 Tiff 对象。然后我使用 ExpressJS 将 Tiff 对象发送给客户端。
问题
总结:使用res.send(object) 向客户端发送对象后,无法再对对象使用方法
更多信息:
从服务器(在 Node.js 中),当我在 Tiff 对象上调用 Tiff.js 库中的方法时,它工作正常。在这里你可以看到我已经调用了一些方法来获取文件信息并将它们记录到控制台。
在客户端,我使用 AngularJS 来获取 Tiff 对象。这似乎是成功的,因为我可以控制台记录该对象。但是当我在对象上调用 Tiff.js 库方法时,它会引发错误。在这里您可以看到我记录了 Tiff 对象,然后尝试记录 Tiff 对象的宽度。
注意:我已检查以确保客户端正确加载了 Tiff.js 文件。
代码
服务器控制器
'use strict';
var fs = require('fs');
var path = require('path');
var Tiff = require('./tiff');
var filename = 'test.oct';
var tiff;
exports.loadOCTFile = function(req, res) {
Tiff.initialize({
TOTAL_MEMORY: 300000000
});
fs.readFile(path.resolve(__dirname, filename), function(err, data) {
if (err) {
throw err;
}
tiff = new Tiff({
buffer: data
});
console.log('width:', tiff.width());
console.log('height:', tiff.height());
console.log('currentDirectory:', tiff.currentDirectory());
console.log('countDirectory:', tiff.countDirectory());
tiff.setDirectory(0);
res.send(tiff);
tiff.close();
});
};
Angular 控制器内部的相关客户端 JS
$scope.getTest = function() {
$http.get('/oct_analysis_open').success(
function(tiff) {
console.log(tiff);
console.log('width:', tiff.width());
});
};
如果需要,我可以发布 Express 路由。
【问题讨论】:
-
如果
width不是函数,它在客户端上是什么? -
如果对象来自ajax,就永远不会有任何方法...
标签: javascript angularjs node.js express