- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Backbone 的新手,在决定保留之前一切都很顺利一长串项目和项目 View 之间的 scrollTop 位置。我设法保存列表和项目 View 的滚动位置,一切都很好,但是当按下浏览器后退按钮时,在实际返回 ListView 之前,浏览器会自动滚动回到 listView 的位置。我用谷歌搜索并没有发现任何关于这种行为的信息。有什么解决办法吗?
提前感谢您的帮助。
App.prototype.initialize = function() {
var e, error1, fallbackLanguage, language;
L.debug("App.initialize -> triggered.");
try {
Backbone.noConflict();
_.noConflict();
window.app = {};
window.app.scrollYHistory = {};
window.app.history = [];
this.listenTo(Backbone, "translate", _translate);
this.listenTo(Backbone, "changeLanguage", _changeLanguage);
this.listenTo(Backbone, "setServerLanguage", _setServerLanguage);
this.listenTo(Backbone, "userLoggedOut", _destroyJWT);
this.listenTo(Backbone, "setJWT", _setJWT);
this.listenTo(Backbone.history, "route", _history);
_UASupportAnimation();
_UASupportCookie();
_UASupportLocalStorage();
_UASupportTransition();
_cssExtra();
window.onerror = function(error) {
return L.error(error);
};
new MainRouter();
new UserRouter();
new AdminRouter();
fallbackLanguage = LANGUAGE_SUPPORTED[LANGUAGE_DEFAULT];
language = _getLanguage();
L.debug("App.initialize -> i18n module.");
return $.i18n.init({
"useCookie": false,
"fallbackLng": fallbackLanguage,
"lng": language,
"load": "current",
"ns": {
"namespaces": ["translation", "validation"],
"defaultNs": "translation"
},
"resGetPath": "/static/languages/__lng__/__ns__.json",
"useDataAttrOptions": true
}).done(function() {
L.debug("App.initialize -> i18n initialization done, starting the application.");
_setServerLanguage();
Backbone.history.start({
"root": "/",
"pushState": true,
"hashChange": true
});
return L.debug("App.initialize -> initialization completed.");
});
} catch (error1) {
e = error1;
return L.error(e);
}
};
_history = function(router, handler, args) {
var e, error1, lastPage;
try {
lastPage = window.app.history[window.app.history.length - 1];
if (!_.isUndefined(lastPage)) {
_saveScrollYPosition(lastPage);
}
return window.app.history.push(window.location.pathname);
} catch (error1) {
e = error1;
return L.error(e);
}
};
_saveScrollYPosition = function(pathname) {
var e, error1;
try {
L.debug("App._saveScrollYPosition -> triggered.");
return window.app.scrollYHistory[pathname || window.location.pathname] = document.body.scrollTop;
} catch (error1) {
e = error1;
return L.error(e);
}
};
function AdView() {
return AdView.__super__.constructor.apply(this, arguments);
}
AdView.prototype.tagName = "section";
AdView.prototype.className = "l-page l-page--ad";
AdView.prototype.template = _.template($(Template).html());
AdView.prototype.initialize = function(model) {
var e, error;
this.model = model;
if (!this.model) {
throw new Error("adView.initialize -> can't initialize without my model!");
}
try {
this.Header = HeaderView;
this.Footer = FooterView;
this.adModel = this.model.adModel.toJSON();
this.scrollYPosition = window.app.scrollYHistory[window.location.pathname] || 0;
this.compiledTemplate = this.template(this.adModel);
return L.debug((this.getMyName()) + ".initialize -> done.");
} catch (error) {
e = error;
return L.error(e);
}
};
AdView.prototype.render = function() {
var e, error;
L.debug((this.getMyName()) + ".render -> triggered");
try {
$("main").html(this.$el.html(this.compiledTemplate));
window.scroll(0, this.scrollYPosition);
L.debug((this.getMyName()) + ".render -> process completed.");
return this;
} catch (error) {
e = error;
return L.error(e);
}
};
return AdView;
最佳答案
在您的 AdView.prototype.render
方法中,您有 window.scroll(0, this.scrollYPosition);
。从提供的代码中不清楚调用 AdView.prototype.render
的位置,但可能是您的路由逻辑中的某些内容在用户访问路由时调用了它。
你写道:
when pressing the browser back button there is an autoscrolling from the browser going back to the position of the listView before actually going back to the list view
当您单击触发新路由操作的浏览器后退按钮时,它会重新触发该路由逻辑。由于您的 render
逻辑涉及更改 window
的滚动位置,因此很自然地,当您单击后退按钮时,您将重新触发该 render
,这将重新更改滚动位置。
关于javascript - Backbone 后退按钮滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33046274/
我有一个主 View 负责呈现其他 View ...... 这是完整的代码 (1) (2) (3)。 当我第一次加载 View (View1、View2、View3)时,一切正常。 然后,如果我尝试重
我正在第一次尝试使用 Backbone.Marionette,并想知道当一个简单的 Backbone.View 就足够了时,是否有任何理由使用 Backbone.Marionette.ItemView
我正在尝试将 Backbone Validation 与 Backbone Stickit 结合使用,我希望在用户输入时一次验证一个属性。但是,当用户输入一个值时,模型上的所有属性都会得到验证,而不仅
我在结合使用 T. Hedersen 的 backbone.validation 插件 ( https://github.com/thedersen/backbone.validation ) 和 D
在下面编辑了这个 在下图中,我有两个主要区域。 左边的用户列表:allusersRegion 另一个用于显示布局的右侧,其中包含在 allusersRegion 中单击的用户的唯一属性和用户的文章列表
如果您单击链接,我的主干路由器工作正常,但在尝试直接访问 URL 或刷新页面时不起作用。 路由器 var app = app || {}; var appRouter = Backbone.Route
我想创建一个 Backbone 模型并将另一个模型的集合存储到它的属性中。所以,有父子模型。每个父级都有一个或多个子级存储在其属性中的数组中。 JSON 将是这样的。 Parent = { n
我正在使用 Backbone 和木偶, 我想对我的收藏和渲染 View 进行排序。 但是发生了一些奇怪的事情。 '/api/note/getList' ,它返回(并在集合被 View 初始化时调用)
我有一个相当通用的模型,并且正在收集该模型(请参见下文),作为一系列观点的基础。在几种 View 上,选择一个模型会生成操作(通过“selected”属性),我需要能够仅在客户端跟踪选择。 但是,似乎
这是一个单一的问题,但我对这是否是一个好习惯这一事实深有感触。 基本上,假设我们有这个微不足道的场景: (function(){ window.App = { Models: {},
我正在使用 Signalr 集线器订阅服务器上的事件。将什么事件分派(dispatch)到集线器,它成功地将项目添加到 Marionette CollectionView。反过来,这会呈现到表格中。
我正在使用 require js 和 Backbone 为 android 开发应用程序。我必须通过 touchend 事件将从集合中获取的模型传递给路由器。我该怎么做? define(["jquer
我有一个 Backbone 集合。如何对集合进行切片,或者至少将列表截断为特定长度? 最佳答案 假设您已经定义并初始化了您的集合,并且您想要改变集合(就地更改),您必须执行以下操作: collecti
我有一个集合,其中有一个添加模型时会触发的事件。我已经在文档中阅读了应该具有options参数但无法获取的参数。 我基本上想在集合中找到模型所在的索引。 在我的收藏夹中,我有这个。 initi
从集合中删除模型时,如何获取模型的索引。 在下面的代码中有一个回调函数 doSomething(){} ,它在 remove 被触发时被调用,我希望索引在那里。 Backbone 文档说“移除前模型的
在项目中同时使用Polymer和Backbone是否有任何限制? 我想不出什么具体的东西,但我想我会在匆忙之前先问清楚。有人可能已经同他们一起工作过,并且发现了某种不兼容之处。 欢迎任何反馈和经验分享
我正在使用bone.js编写应用程序,并在页面之间进行动画处理(有点像iPhone风格的ui)。因此,当您单击按钮时,下一页将从右侧滑入,而单击后退按钮将使下一页从左侧滑入。我希望能够使用路由器对浏览
我刚刚开始学习ribs.js。我在理解如何/何时使用模型和集合时遇到问题。我在网上找到了几个教程,每个教程都使用不同的方法来构建应用程序。在某些情况下,是从Collection对象的REST API中
我有一个由 REST API 给出的模型,其中一个名称的属性是这样的: defaults: { ... "user-name" : "", ... } 然后当我尝试通过这种方式在模板中呈现它时: U
我有一个 Backbone 应用程序,它从我使用 Backbone 的代码中的不同位置不确定地获取错误 Backbone is not defined 。有时它会先加载然后加载网站,有时则不会。我将以
我是一名优秀的程序员,十分优秀!