Javascript RequireJS未捕获类型错误:无法读取属性';绑定&x27;未定义的
我试图将一个普通的JS转换成AMD来满足需求。虽然在转换时,我经历了标题上所述的错误 这是它发生的脚本Javascript RequireJS未捕获类型错误:无法读取属性';绑定&x27;未定义的,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,我试图将一个普通的JS转换成AMD来满足需求。虽然在转换时,我经历了标题上所述的错误 这是它发生的脚本 define(['cardExpansionTrianglify'], function(Trianglify) { var demoController = function() { /** * Enum of CSS selectors. */ var SELECTORS = { pattern
define(['cardExpansionTrianglify'], function(Trianglify) {
var demoController = function() {
/**
* Enum of CSS selectors.
*/
var SELECTORS = {
pattern: '.pattern',
card: '.card',
cardImage: '.card__image',
cardClose: '.card__btn-close',
};
/**
* Enum of CSS classes.
*/
var CLASSES = {
patternHidden: 'pattern--hidden',
polygon: 'polygon',
polygonHidden: 'polygon--hidden'
};
/**
* Map of svg paths and points.
*/
var polygonMap = {
paths: null,
points: null
};
/**
* Container of Card instances.
*/
var layout = {};
var demoCtrl = {
init: function() {
// For options see: https://github.com/qrohlf/Trianglify
var pattern = Trianglify({
width: window.innerWidth,
height: window.innerHeight,
cell_size: 50,
variance: 1,
stroke_width: 0.5,
x_colors: ['#67001f','#b2182b','#d6604d','#f4a582','#fddbc7','#ffffff','#e0e0e0','#bababa','#878787','#4d4d4d','#000000'],
y_colors: ['#67001f','#b2182b','#d6604d','#f4a582','#fddbc7','#ffffff','#e0e0e0','#bababa','#878787','#4d4d4d','#000000']
// x_colors : ['rgb(103, 0, 31)','rgb(178, 24, 43)','rgb(214, 96, 77)','rgb(244, 165, 130)','rgb(253, 219, 199)','rgb(255, 255, 255)','rgb(224, 224, 224)','rgb(186, 186, 186)','rgb(135, 135, 135)','rgb(77, 77, 77)','rgb(26, 26, 26)'],
// y_colors: ['rgb(103, 0, 31)','rgb(178, 24, 43)','rgb(214, 96, 77)','rgb(244, 165, 130)','rgb(253, 219, 199)','rgb(255, 255, 255)','rgb(224, 224, 224)','rgb(186, 186, 186)','rgb(135, 135, 135)','rgb(77, 77, 77)','rgb(26, 26, 26)']
}).svg(); // Render as SVG.
this.mapPolygons(pattern);
this.bindCards();
},
detectPointInCircle: function() {
var xp = point.x;
var yp = point.y;
var xc = center.x;
var yc = center.y;
var d = radius * radius;
var isInside = Math.pow(xp - xc, 2) + Math.pow(yp - yc, 2) <= d;
return isInside;
},
onCardMove: function(track) {
var radius = track.width / 2;
var center = {
x: track.x,
y: track.y
};
polygonMap.points.forEach(function(point, i) {
if (demoCtrl.detectPointInCircle(point, radius, center)) {
$(polygonMap.paths[i]).attr('class', CLASSES.polygon);
} else {
$(polygonMap.paths[i]).attr('class', CLASSES.polygon + ' ' + CLASSES.polygonHidden);
}
});
},
showHideOtherCards: function(id) {
var TL = new TimelineLite;
var selectedCard = layout[id].card;
for (var i in layout) {
var card = layout[i].card;
// When called with `openCard`.
if (card.id !== id && !selectedCard.isOpen) {
TL.add(card.hideCard(), 0);
}
// When called with `closeCard`.
if (card.id !== id && selectedCard.isOpen) {
TL.add(card.showCard(), 0);
}
}
return TL;
},
playSequence: function(isOpenClick, id, e) {
var card = layout[id].card;
// Prevent when card already open and user click on image.
if (card.isOpen && isOpenClick) return;
// Create timeline for the whole sequence.
var sequence = new TimelineLite({paused: true});
var tweenOtherCards = demoCtrl.showHideOtherCards(id);
if (!card.isOpen) {
// Open sequence.
sequence.add(tweenOtherCards);
sequence.add(card.openCard(this.onCardMove), 0);
} else {
// Close sequence.
var closeCard = card.closeCard();
var position = closeCard.duration() * 0.8; // 80% of close card tween.
sequence.add(closeCard);
sequence.add(tweenOtherCards, position);
}
return sequence.play();
},
bindCards: function() {
var elements = $(SELECTORS.card);
$.each(elements, function(i, card) {
var instance = new Card(i, card);
layout[i] = {
card: instance
};
var cardImage = $(card).find(SELECTORS.cardImage);
var cardClose = $(card).find(SELECTORS.cardClose);
$(cardImage).on('click', demoCtrl.playSequence.bind(this, true, i));
$(cardClose).on('click', demoCtrl.playSequence.bind(this, false, i));
});
},
mapPolygons: function(pattern) {
// Append SVG to pattern container.
$(SELECTORS.pattern).append(pattern);
// Convert nodelist to array,
// Used `.childNodes` because IE doesn't support `.children` on SVG.
polygonMap.paths = [].slice.call(pattern.childNodes);
polygonMap.points = [];
polygonMap.paths.forEach(function(polygon) {
// Hide polygons by adding CSS classes to each svg path (used attrs because of IE).
$(polygon).attr('class', CLASSES.polygon + ' ' + CLASSES.polygonHidden);
var rect = polygon.getBoundingClientRect();
var point = {
x: rect.left + rect.width / 2,
y: rect.top + rect.height / 2
};
polygonMap.points.push(point);
});
// All polygons are hidden now, display the pattern container.
$(SELECTORS.pattern).removeClass(CLASSES.patternHidden);
}
}
demoCtrl.init();
}
return demoController;
});
define(['cardExpansionTrianglify'],函数(Trianglify){
var demoController=函数(){
/**
*CSS选择器的枚举。
*/
变量选择器={
模式:'.pattern',
卡片:“.card”,
cardImage:“.card\u image”,
卡片关闭:'.card_ubtn-close',
};
/**
*CSS类的枚举。
*/
变量类={
patternHidden:'模式--隐藏',
多边形:“多边形”,
polygonHidden:“多边形--隐藏”
};
/**
*svg路径和点的地图。
*/
变量polygonMap={
路径:null,
点数:空
};
/**
*卡片实例的容器。
*/
var布局={};
var demoCtrl={
init:function(){
//有关选项,请参见:https://github.com/qrohlf/Trianglify
变量模式=三角形({
宽度:window.innerWidth,
高度:window.innerHeight,
单元格大小:50,
差异:1,
笔画宽度:0.5,
x#U颜色:[#67001f'、#b2182b'、#d6604d'、#f4a582'、#fddbc7'、#ffffff'、#E0E0'、#bababa'、#878787'、#4D4D'、#000000'],
y#U颜色:[#67001f'、#b2182b'、#d6604d'、#f4a582'、#fddbc7'、#FFFF'、#e0e0e0'、#bababa'、#878787'、#4D4D'、#000000']
//x_颜色:['rgb(103,0,31)'、'rgb(178,24,43)'、'rgb(214,96,77)'、'rgb(244,165,130)'、'rgb(253,219,199)'、'rgb(255,255,255)'、'rgb(224,224,224)'、'rgb(186,186)'、'rgb(135,135)'、'rgb(77,77)'、'rgb(26'],
//y_颜色:['rgb(103,0,31)'、'rgb(178,24,43)'、'rgb(214,96,77)'、'rgb(244,165,130)'、'rgb(253,219,199)'、'rgb(255,255,255)'、'rgb(224,224,224)'、'rgb(186,186)'、'rgb(135,135)、'rgb(77,77)'、'rgb(26)]
}).svg();//呈现为svg。
本图为多边形(图案);
这个。bindCards();
},
detectPointInCircle:函数(){
var xp=点x;
var yp=点y;
var xc=中心x;
var yc=中心y;
var d=半径*半径;
var-isInside=Math.pow(xp-xc,2)+Math.pow(yp-yc,2)