我正在一个Angular项目中工作,我想添加turn.js库来做一个翻页书,它已经完成了集成。x1c 0d1x的数据
但是如果我试图进入书的下一页,它会显示下一页,但书会像图中一样进入他的第一个位置,我还想在URL中添加从这个http://localhost:4200/#/到这个http://localhost:4200/#/page-1,然后到http://localhost:4200/#/非常快。
在控制台中显示以下错误:
的
下面是hash.js文件:
(function() {
'use strict';
var hashes = {},
regexp = {},
history = [],
freq = 100,
num = 0,
pushState = false,
timer = null,
currentUrl = null,
freeze = function(obj) {
if (Object.freeze) return Object.freeze(obj);
return obj;
},
getHashParts = function() {
return window.location.href.split('#');
},
startTimer = function() {
if (!timer)
timer = setInterval(function() {
if (num>0 && currentUrl!=window.location.href) {
currentUrl = window.location.href;
window.Hash.check();
}
}, freq);
},
stopTimer = function() {
if (timer) {
clearInterval(timer);
timer = null;
}
};
window.Hash = freeze({
pushState: function(yes) {
if (window.history && window.history.pushState)
pushState = yes;
return this;
},
fragment: function() {
var hash = getHashParts();
return (pushState) ?
window.location.pathname + ((hash[1]) ? '#' + hash[1] : '')
: hash[1] || '';
},
get: function(path, params) {
var p, fragment = '', parameters = [];
for(p in params) {
if (!Object.prototype.hasOwnProperty(p))
continue;
parameters.push(encodeURIComponent(p) + '=' + encodeURIComponent(params[p]));
}
if (parameters.length>0)
parameters = '?' + parameters.join('&');
return (pushState) ? path + parameters :
getHashParts()[0] + '#' + path + parameters;
},
go: function(hash, params) {
if (this.fragment()!=hash) {
var to = this.get(hash, params);
if (pushState)
window.history.pushState(null, document.title, to);
else
window.location.href = to;
}
return this;
},
update: function () {
currentUrl = window.location.href;
return this;
},
on: function(hash, callback, title) {
if (!hashes[hash])
hashes[hash] = {title: title, listeners: []};
hashes[hash].listeners.push(callback);
num++;
startTimer();
return this;
},
check: function() {
var i,
hash,
parts,
fragment = this.fragment();
for (hash in hashes) {
if (!Object.prototype.hasOwnProperty.call(hashes, hash))
continue;
hashes[hash].regexp = hashes[hash].regexp || new RegExp(hash);
if ((parts = hashes[hash].regexp.exec(fragment))) {
if (hashes[hash].title)
document.title = hashes[hash].title;
for (i = 0; i<hashes[hash].listeners.length; i++)
if (hashes[hash].listeners[i].yep)
hashes[hash].listeners[i].yep(fragment, parts);
} else {
for (i = 0; i<hashes[hash].listeners.length; i++)
if (hashes[hash].listeners[i].nop)
hashes[hash].listeners[i].nop(fragment);
}
}
return this;
}
});
})();
字符串
1条答案
按热度按时间eoigrqb61#
Angular需要完全控制你的应用程序。不要使用jQuery以任何方式修改DOM,因为Angular不会知道它。
路由也是如此。显然你已经安装了angular-router,看起来你试图使用一些非angular代码来修改route/URL。这不会与Angular一起工作。
你需要以完全Angular的方式来实现这一点,或者根本不使用Angular。永远不要混淆这些概念