gpt4 book ai didi

javascript - 将 SammyJs 与 RequireJs 结合使用

转载 作者:行者123 更新时间:2023-11-29 10:47:19 24 4
gpt4 key购买 nike

我有点麻烦让 sammyjs 与 requirejs 一起玩。调用 $.sammy 失败,错误提示 sammy 未在 jQuery 命名空间中定义。

这是我的需求配置

require.config
baseUrl: '/Scripts'
waitSeconds: 10
paths:
bootstrap: './lib/bootstrap/bootstrap'
domReady: './lib/domReady/domReady'
knockout: './lib/knockout/knockout-2.2.1.debug'
jquery: './lib/jquery/jquery-1.9.1'
sammy: './lib/sammy/sammy-0.7.4'
myPage: './app/pages/myPage'
myViewModel: './app/viewModels/myViewModel'
shim:
bootstrap:
deps: ["jquery"]
sammy:
deps: ["jquery"]
exports: "Sammy"

这是我的页面 javascript

require ['knockout', 'myViewModel', 'domReady!' ], ( ko, viewModel ) ->
myViewModel = new viewModel
ko.applyBindings( myViewModel )

这是我的 View 模型

define [ 'jquery', 'sammy', 'knockout' ], ( $, sammy, ko ) ->
class myViewModel
constructor: ( options ) ->
self = @
@sammypath = ko.observable( 1 )

@router = $.sammy( ->
@get '#/', ( data ) ->
self.sammypath( 1 )
)
@router.run()

但是,当我尝试调用 $.sammy

时出现错误
Uncaught TypeError: Object function ( selector, context ) 
{ // The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery ); }
has no method 'sammy'

我猜是 require.config 出了点问题,但老实说我不确定。

sammy-0.7.4.js 文件下载正常。

传递给 View 模型中define的sammy不为null

我在 sammy 文件上设置了一个断点,它被击中并识别出它是一个 AMD 模块。我只是不确定为什么它不将自己添加到 jQuery 命名空间。

我仔细检查了页面是否首先正确加载,但 domReady 模块负责处理。

我也在使用 coffeescript,但我认为这不是问题。

最佳答案

为了让 sammy 工作,我只是删除了 $. 符号,因为我正在注入(inject)它

@router = sammy( -> 
@get( '#/', ( data ) ->
self.sammypath( 1 )
)
)

不幸的是,我似乎无法让 $.sammy 工作。 The RequireJs documentation有一些关于如何让 $.sammy 工作的提示

var require = {
deps: ["some/module1", "my/module2", "a.js", "b.js"],
callback: function(module1, module2) {
//This function will be called when all the dependencies
//listed above in deps are loaded. Note that this
//function could be called before the page is loaded.
//This callback is optional.
}
};

看起来我可以使用回调来让它与类似的东西一起工作

var require = {
deps: ["jquery", "sammy"],
callback: ($, sammy) ->
$.sammy = sammy
}

但我不能让它与 require.config 一起玩,如果有人知道如何排序,请告诉我!我见过其他人使用 knockoutko 以及映射插件 ko.mapping

做类似的事情

关于javascript - 将 SammyJs 与 RequireJs 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com