调用其他JS文件中存在的函数

时间:2016-12-29 09:39:09

标签: knockout.js

在我的应用中,每个视图都有自己的JS, 用户可以点击“上传”按钮和文件上传模式显示>然后他从列表中选择一个图像>然后他点击“保存”按钮:

fileUpload.js:

  viewModel.prototype.save = function () {
        cms.closeDialog(this, this.selectedObject());
    };

我想要实现的目标>当用户点击“保存”按钮时>图像的缩略图将显示在 Products.html:

中的专用div中
  <div data-bind="visible: thumbnailVisible">
            <img data-bind="attr: { src: computedThumbnailUrl }, css: { 'cms-fileupload-thumbnail': isExternal }" alt="Image preview"/>
        </div>
  • 现在它正常工作,但刷新页面后仅

Products.js:

 fileUpload.prototype.fileUploaded = function (fileSize, fileName, extension) {
            this.resetThumbnail();
            this.value().fileName = fileName;
            this.updateFileSize(fileSize);
            if (this.uploadCallback) {
                this.uploadCallback.call(this.context || this, fileName, extension);
            }
        };

来自fileUpload.js中的保存事件我试图调用fileUploaded中存在的Products.js函数。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您的Product.js文件可能包含以下内容:

var ProductModel = {
   //code on this model

   fileUpload.prototype.fileUploaded = function (fileSize, fileName, extension) {
        this.resetThumbnail();
        this.value().fileName = fileName;
        this.updateFileSize(fileSize);
        if (this.uploadCallback) {
            this.uploadCallback.call(this.context || this, fileName, extension);
        }
    };

    //code on this model
}

因此,当您尝试从外部访问该功能时,它不在当前范围内。 您可能必须使用在Products.js上设置模型的变量来调用您的函数。