【问题标题】:ko is not defined with requirejsko 没有用 requirejs 定义
【发布时间】:2013-02-17 11:22:05
【问题描述】:

我正在尝试使用 requirejs 通过以下方式加载 knockoutjs:

<script type="text/javascript">
    require(['scripts/knockout-2.2.1.debug'], function() {
        var someModel = {
            firstname: ko.observable('asd')
        };
        ko.applyBindings(someModel);
    });
</script>

其中 require.js 是使用顶部的脚本标记加载的。 当这段代码执行时,我得到一个 ko is not defined 错误。做类似的正确方法是什么?

【问题讨论】:

  • function(ko) { .....怎么样
  • 感谢 HungryCoder.. 它解决了这个问题。不幸的是,我无法将评论标记为答案,但确实如此。
  • 只是好奇——下面的逻辑是什么?如果我在 require 中包含 4 个库,我必须添加 4 个参数才能使用它们?此外,如果我只在页面上包含 2 个脚本标签 - 一个用于 requirejs,另一个用于 knockoutjs(以相同的顺序且页面上没有其他代码),它会引发错误。是不是仅仅添加了requirejs,就和后面的其他脚本标签冲突了?我的问题已解决,但如果有人能解决我的困惑,那就太好了。
  • 很高兴知道它有帮助。我已经做出了更多澄清的答案

标签: knockout.js requirejs


【解决方案1】:
require(['scripts/knockout-2.2.1.debug'], function(ko) {

我不确定,但看到 requirejs 上的示例,我猜这些是在该回调函数的范围内加载的。所以,除非你在你的函数中接受它,否则你不能使用它。

是的,你是对的(至少,看看他们的例子)。如果包含 4 个库,则需要接受 4 个参数。例如,如果你加载了jquery和knockout,你可以这样写:

require(['scripts/jquery.js', 'scripts/knockout-2.2.1.debug'], function($, ko) {

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    相关资源
    最近更新 更多