【问题标题】:Calling a method via another method通过另一个方法调用一个方法
【发布时间】:2015-07-21 02:51:18
【问题描述】:

我知道我缺少一些基本的东西。如何从startup 方法(注释行)内部调用checkValue 方法?这些都包含在 MVC 框架和自定义 API 的视图中。

基本上,当startup 运行时,我希望alert() 触发。

define(function(require) {
  'use strict';
  var Class = require('common/Class'),
      ModuleView = require('common/platform/ModuleView');

  var value = 0;

  return Class.create(
    ModuleView,
    {

      startup : function() {
        value = 1;
        //invoke checkValue(value) somehow... this.checkValue(value)?
      },

      checkValue: function(value) {
        if (value >= 1) {
          alert("Hello.");
        }
      }

    }
  );

});

【问题讨论】:

  • 哈哈,是的,在你尝试之前永远不知道。调试它,检查“startup”中的“this”,看看它是窗口还是具有“checkValue”函数的对象,或者它是否是可以让你使用该函数访问对象的其他东西。跨度>
  • @JohnnyFun 好主意,但真正的问题:我将如何调试 this 并查看其范围?
  • 看起来下面的答案可能是你的票。但是,了解 js 调试技术让自己摆脱困境是件好事,因此请熟悉 Chrome 的开发工具。假设您正在使用 chrome 查看页面,请按 F12。然后按 ctrl + p 并找到您的脚本。在那里,您可以通过单击右侧的行号在“启动”函数中放置一个断点。然后重新加载页面,chrome 将为您命中该断点。当你在断点上时,你可以点击控制台选项卡并写“this”+回车,看看它包含什么秘密......
  • @JohnnyFun 谢谢,这很有教育意义!

标签: javascript model-view-controller methods view


【解决方案1】:

这样写课程怎么样:

return Class.create(ModelView, modelView());

function modelView() {
    this.startup = function() {
        value = 1;
        this.checkValue(value);
    }
    this.checkValue = function(value) {
        if (value >= 1)
            alert("Hello.");
    }
}

这样你也可以通过声明一个新实例来多次使用这个类。

【讨论】:

  • 我会试一试并报告。谢谢你的想法。
  • 您可能还想在类内声明值...我不确定您为什么在类外声明它。
  • 它有效。这将需要大量的重写,但它确实有效。谢谢!
  • 好吧,没关系。它在纯 JS 意义上工作,但他们的 API 完全破坏了它。还不知道为什么。无论如何,我会继续摆弄它。
  • 乐于助人。顺便说一句,这是一个私有 API 吗?
猜你喜欢
  • 2012-12-08
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 2016-07-02
  • 2015-06-16
  • 1970-01-01
相关资源
最近更新 更多