我有一點麻煩讓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,但我不認爲這應該是一個問題。