【问题标题】:Nested functions have no access to requirejs callback parameters嵌套函数无法访问 requirejs 回调参数
【发布时间】:2016-05-28 20:22:41
【问题描述】:

在迁移到 requirejs 时,我遇到了一个我似乎无法找到答案的问题。

问题是我的嵌套函数无法访问传递给 requirejs 回调的参数。

例如:

define(['knockout', 'knockoutmapping', 'other'], function(ko, mapping, other) {
  var Something = function() {
     var self = this;

     self.items = ko.observableArray([]);

     self.doSomeStuff = function(data) {
        // I would think I would still be able to access
        // parameters ko, mapping and other
        // trouble is, I cannot.  I only have 
        // a valid 1st parameter, "ko".
        var d = ko.toJSON(self.items()); // this works fine
        self.items(mapping.fromJS(data));// this does not work (undefined)
        // do not have access to "other" either.
     };
  };

  return {
      Something: Something,
  };
});

对此的任何帮助将不胜感激。我知道我可以将这些放入回调中的变量中,但这对我来说似乎不是正确的方法。

提前谢谢你。

【问题讨论】:

  • 很好,但这只是展示我遇到的问题的示例代码。我在实际代码中有匹配的引号。谢谢你指出这一点。我已经在这里修好了。
  • 问题不在于嵌套函数的使用。嵌套函数中的mapping 与外部的mapping 相同。 (您可以调用console.log 来向您保证这一点,或者使用调试器。)如果确实没有定义mapping,那么问题就出在其他地方。您对错误的描述也有点模糊。请在您的问题中逐字包含它,包括堆栈跟踪。
  • 不应该是require而不是define吗?

标签: javascript knockout.js requirejs


【解决方案1】:

在定义中,回调是第一个参数,它有一个参数需要函数,尝试:

define(function(require) {
   var knockout = require('knockout');
   var knockoutmapping = require('knockoutmapping');
   var other = require('./other');
   var Something = function() {
     ...
   };

  return {
      Something: Something,
  };
});

【讨论】:

  • 外部变量仍然在内部函数中丢失。
猜你喜欢
  • 2022-01-16
  • 2020-12-25
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多