我正在重复一个对象数组,我希望循环中的变量只能引用每个对象的一个属性.
简化数据示例:
var data = [
{
'name': {
'first': 'John',
'last': 'Johnson'
}
'age': 45
},
{
'name': {
'first': 'Larry',
'last': 'Wilson'
}
'age': 45
}
]
Run Code Online (Sandbox Code Playgroud)
我可以:
<div ng-repeat="person in data">{{ person.name.first }}</div>
但我更喜欢做的只是专注于我正在使用的对象的唯一部分,并执行以下操作:
<div ng-repeat="person.name in data as name">{{ name.first }}</div>
但这似乎不起作用 - 这目前可能吗?
在iOS 7 Safari中,现在有两种向后/向前导航的方式 - 使用底部的传统后退/前进按钮箭头或从屏幕边缘滑动.我正在使用动画在我的ajax应用程序中的页面之间进行转换,但如果用户通过边缘滑动导航,我不想触发该转换,因为这是一个动画本身.
但是,对于这两种类型的导航,popstate事件对象看起来都是相同的 - 有没有办法区分这两种类型的用户导航,以便我们可以做出相应的响应?
更新:我能够使用(似乎是)iOS7 Safari中的错误来正确检测边缘滑动与后退按钮点击.问题在于,当使用边缘滑动(但是touchstart和touchmove)时,触摸事件不会被触发(直到下一个触摸事件).所以我设置了一个shouldAnimate标志并在touchmove上禁用它 - 然后如果标志被禁用并且popstate发生,我知道这是一个边缘滑动.
它在99%的时间是正确的 - 唯一可能失败的时间是用户边缘部分滑动但然后放开并让当前页面快速恢复到位(此时我的标志仍将被禁用)然后点击后退按钮(不触发任何触摸事件).为了处理最后的[边缘]情况,我在touchmove上设置了一个定时器,以便在50ms后重新启用该标志.
是的它是"脏"但是现在几乎在每种情况下它都能得到我想要的东西所以我很好 - 直到Apple修复了这个bug,但希望它们也能在popstate事件对象中提供一个告诉我们的指示器它是什么样的导航.
我有两个视图 - OverlayView和StoryView.StoryView需要附加到OverlayView(两者都是动态创建的).我在OverlayView中动态创建了#overlay div,但是当我将StoryView的'el'设置为#overlay时,这个$.el的StoryView是一个空数组.在创建StoryView时,#rellay div肯定存在于DOM中.
如何让StoryView将dyanmically创建的#overlay识别为'el'?假设"el"应该是附加视图的"父"容器,我是否正确?OverlayView的'el'应该是'#overlay'吗?
OverlayView的:
OverlayView = Backbone.View.extend({
el: $('body'),
events: {
'click #film': 'hideOverlay'
},
initialize: function() {
this.render();
},
render: function() {
this.$el.append('<div id="overlay"></div>');
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
StoryView:
var StoryView = Backbone.View.extend({
el: $('#overlay'),
events: {
'click .close': 'closeStory'
},
initialize: function() {
this.render();
},
render: function() {
console.log(this.$el); // Returns empty array []
return this;
}
});
Run Code Online (Sandbox Code Playgroud)