2016-03-05 13 views
4

我主要有如下:要求,淘汰賽和尋呼機爲未定義類型錯誤

requirejs.config({ 
    paths:{ 
    'text':'../vendor/js/text.min', 

    'jquery':"../vendor/js/jquery.min", 
    'boostrap':"../vendor/js/bootstrap.min", 
    'ko':"http://knockoutjs.com/downloads/knockout-3.4.0.debug", 
    'pager':"../vendor/js/pager", 

    'imageGroupsVm':'../js/viewModels/imageGroupsViewModel', 
    'panelVm':'../js/viewModels/panelViewModel', 

    'compMessage':'../js/components/message', 
    'extBooleanToggle':'../js/extenders/booleanToggle' 
    }, 
    shim:{ 
    'bootstrap':['jquery'], 
    'pager':['ko'], 
    }, 
    waitSeconds: 200, 
}); 

define(['jquery','ko','pager','panelVm'],function($,ko,pager,panelVm) 
{ 
    pager.extendWithPage(panelVm); 
    ko.applyBindings(panelVm); 
    pager.start(); 
}); 

但出於某種原因,我得到這兩個錯誤信息:

TypeError: ko is undefined 
Stack trace: 
[email protected]://localhost/symphotest/assets/vendor/js/pager.js:150:9 
@http://localhost/symphotest/assets/vendor/js/pager.js:1506:20 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1690:24 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:865:43 
newContext/Module.prototype.enable/</<@http://localhost/symphotest/assets/vendor/js/require.min.js:1140:29 
bind/<@http://localhost/symphotest/assets/vendor/js/require.min.js:131:20 
newContext/Module.prototype.emit/<@http://localhost/symphotest/assets/vendor/js/require.min.js:1190:21 
[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:56:31 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1189:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:940:25 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1177:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:783:21 
[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1204:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1604:1 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1711:21 
require.min.js:900:37 

TypeError: pager is undefined 
Stack trace: 
@http://localhost/symphotest/assets/js/panel-main.js:65:5 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1690:24 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:865:43 
newContext/Module.prototype.enable/</<@http://localhost/symphotest/assets/vendor/js/require.min.js:1140:29 
bind/<@http://localhost/symphotest/assets/vendor/js/require.min.js:131:20 
newContext/Module.prototype.emit/<@http://localhost/symphotest/assets/vendor/js/require.min.js:1190:21 
[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:56:31 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1189:17 
newContext/Module.prototype.che[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:940:25 
newContext/Module.prototype.enable/</<@http://localhost/symphotest/assets/vendor/js/require.min.js:1140:29 
bind/<@http://localhost/symphotest/assets/vendor/js/require.min.js:131:20 
newContext/Module.prototype.emit/<@http://localhost/symphotest/assets/vendor/js/require.min.js:1190:21 
[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:56:31 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1189:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:940:25 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1177:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:783:21 
[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1204:17 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1604:1 
newContext/[email protected]://localhost/symphotest/assets/vendor/js/require.min.js:1711:21 
require.min.js:900:37 

Furtermore的panelViewModel.js包含:

define(['ko','imageGroupsVm','compMessage'],function(ko,ImageGroupsVM,loginViewModel) 
{ 
    var image_groups=new ImageGroupsVM(); 


    return {'imageGroups':image_groups}; 
}); 

而ImageGroupsViewModel包含:

define(['ko','jquery'],function(ko,$) 
{ 
    console.log(ko); 
    return function imageGroupsViewModel() 
    { 
    var self=this; 

    self.albums=ko.observableArray(); 

    self.init=function() 
    { 
     self.albums([]); 

     self.fetchData(); 
    } 

    self.fetchData=function() 
    { 
     console.log("Data Fetched"); 
    }; 

    function Album(data) 
    { 

    } 
    }; 
}) 

所有的JS文件,我已經是: (請注意,錫的供應商類是在外部庫我負載)

Js Files

請你能幫我找出這個問題?

回答

2

我設法通過在需要時用'knockout'替換'ko'來解決它。

更具體地對主(該文件您在你的HTML數據,主)

以下行:

'ko':"http://knockoutjs.com/downloads/knockout-3.4.0.debug", 

改爲:

'knockout':"http://knockoutjs.com/downloads/knockout-3.4.0.debug", 

我包括上墊片:

'pager':['knockout'], 

define(['jquery','ko','pager','panelVm'],function($,ko,pager,panelVm) 

變成

define(['jquery','knockout','pager','panelVm'],function($,ko,pager,panelVm) 

所以我主要是:

requirejs.config({ 
    paths:{ 
    'text':'../vendor/js/text.min', 

    'knockout':"https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min", 
    'pager':"../vendor/js/pager.min", 
    'jquery':"../vendor/js/jquery.min", 
    'boostrap':"../vendor/js/bootstrap.min", 

    'imageGroupsVm':'../js/viewModels/imageGroupsViewModel', 
    'panelVm':'../js/viewModels/panelViewModel', 

    'compMessage':'../js/components/message', 
    'extBooleanToggle':'../js/extenders/booleanToggle' 
    }, 
    shim:{ 
    'pager':['knockout'], 
    'bootstrap':['jquery'], 
    }, 
    waitSeconds: 200, 
}); 

define(['jquery','knockout','pager','panelVm'],function($,ko,pager,panelVm) 
{ 
    pager.extendWithPage(panelVm); 
    ko.applyBindings(panelVm); 
    pager.start(); 
}); 

同樣在裝載有在我的項目我的其他JavaScript文件需要我改了行:

define(['ko',...,'other_lib'],function(ko,....,other_lib) 

附:

define(['knockout',...,'other_lib'],function(ko,....,other_lib) 

注: 我也改變了我加載使用需要在另一個頁面其他main.js theese線:

'ko':"http://knockoutjs.com/downloads/knockout-3.4.0.debug", 

改爲:

'knockout':"http://knockoutjs.com/downloads/knockout-3.4.0.debug", 

我這樣做是爲了加載我使用require創建的所有模塊。