2013-03-30 34 views
6

Vì vậy, tôi mới sử dụng Require.js và tôi đã học thư viện này bằng cách tải các thư viện khác bằng cách sử dụng các phương thức Require.js.Tải jwplayer.js bằng cách sử dụng Require.js

Tôi đã tải thành công đối tượng Knockout.js, đối tượng Chart.js, cũng như các đối tượng được xác định Require.js tùy chỉnh.

Nhưng tôi dường như không thể tải jwplayer bằng cách sử dụng Require.js. Đây là phương pháp lỗi tôi nhận được: lỗi chưa gặp: Không thể gọi phương thức 'jwplayer' không xác định

Đây là mẫu mã của tôi (các Knockout, Chart đối tượng tất cả nạp thành công)

require(['jwplayer/jwplayer', 'libs/Chart', 'libs/knockout-2.1.0', 'appViewModel','helper/util'], function(jwplayer, chart, ko, appViewModel, util) { 

//LOADING FROM jwplayer.js 
jwplayer("player").setup({ 
    width: '320', 
    height: '40', 
    sources: [{ 
     file: "rtmp://127.0.0.1:1935/vod/mp3:sample_1.mp3" 
    },{ 
     file: "http://127.0.0.1:1935/vod/sample_1.mp3/playlist.m3u8" 
    }] 
}); 

//LOADING FROM Chart.js 
var barChartData = { 
    labels : ["January","February","March","April","May","June","July"], 
    datasets : [ 
     { 
      fillColor : "rgba(220,220,220,0.5)", 
      strokeColor : "rgba(220,220,220,1)", 
      data : [65,59,90,81,56,55,40] 
     }, 
     { 
      fillColor : "rgba(151,187,205,0.5)", 
      strokeColor : "rgba(151,187,205,1)", 
      data : [28,48,40,19,96,27,100] 
     } 
    ] 
}; 
var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Bar(barChartData); 

//LOADING FROM knockout-2.1.0.js 
ko.applyBindings(new appViewModel()); 

//LOADING FROM A CUSTOM DEFINED OBJECT 
util.greets(); 
    }); 

Vậy làm thế nào Bạn có tải jwplayer.js bằng cách sử dụng Require.js không?

Trả lời

8

jwplayer.js không xác định một mô-đun cho require.js, vì vậy bạn sẽ phải sử dụng shim config, một cái gì đó như thế này:

require.config({ 
    shim: { 
     'jwplayer/jwplayer': { 
      exports: 'jwplayer' 
     } 
    } 
}); 

Bạn có thể xem chi tiết về làm thế nào để sử dụng nó trong tài liệu api requirejs.

Chỉnh sửa: typo trong mẫu mã.

Chỉnh sửa 2: cần lưu ý rằng jwplayer() sẽ trả về null nếu không tìm thấy trình phát mà bạn truyền, vì vậy ngay cả khi nó được tải chính xác, nó vẫn sẽ ném lỗi đó. Nếu bạn gặp phải lỗi ngay cả sau khi bao gồm cấu hình, hãy thử thêm một cái gì đó như

console.log(jwplayer.api); 

trong yêu cầu gọi lại và kiểm tra bảng điều khiển của bạn để xem có điều gì ở đó không.

+0

cảm ơn, cấu hình shim hoạt động hoàn hảo! :) –

+0

Rất đẹp, hãy bình chọn! :) – emaxsaun