我有一点麻烦让sammyjs玩requirejs。调用$.sammy
失败,错误表示sammy未在jQuery名称空间中定义。与RequireJs一起使用SammyJs
这是我需要的配置
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)
这里是我的视图模型
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
文件已下载正常。
萨米是通过传递到视图模型的定义不为空
我贴在萨米文件中的断点,它被击中,并认识到这是一个AMD模块。我只是不确定为什么它不会自己添加到jQuery名称空间。
我再次检查页面是否正确加载,但domReady模块负责。
我也在使用coffeescript,但我不认为这应该是一个问题。