大佬教程收集整理的这篇文章主要介绍了jquery – 使用Backbone.js创建后为HTML元素设置动画,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
模板:
<script id="content_template" type="text/template"> <div class="content" style="position: absolute; top:<%= top %>px; left:<%= left %>px; width:<%= width %>px; height:<%= height %>px; " ></div> </script>
模型:
var FrameObject = BACkbone.Model.extend({ defaults: { top: 0,left: 0,width: 1,height: 1 } });
采集:
var FrameObjects = BACkbone.Collection.extend({ model: FrameObject });
对象视图:
var Object_view = BACkbone.View.extend({ template: _.template($("#content_template").html()),render:function(){ return this.template(this.model.toJSON()); } });
对象容器视图:
var App_view = BACkbone.View.extend({ el: $(".container"),events: { "click .container": "create_object" },create_object: function(event){ var frame_object = new FrameObject({ top: event.pageX,left: event.pageY,width: 100,height: 100 }); frame_objects.add(frame_object); var object_view = new Object_view({model: frame_object}); this.$(".container").append(object_view.render()); /* here I want to change the 'top' & 'left' attributes of the object model and want my object_view to animate to that position. Same as it would do for - someElement.animate({top: newTop,left: newLeft}); */ } });
var FrameObject = BACkbone.Model.extend({ defaults: { top: 0,height: 1 } }); var FrameObjects = BACkbone.Collection.extend({ model: FrameObject }); var ObjectView = BACkbone.View.extend({ className: 'frame',initialize: function() { this.model.on('change',this.animate,this); },render: function() { var params = _.extend(this.model.toJSON(),{ position: 'absolute' }); this.$el.css(params); return this; },animate: function() { this.$el.animate(this.model.toJSON()); } }); var AppView = BACkbone.View.extend({ el: $("#container"),events: { "click": "createObject" },createObject: function(event) { var frameObject = new FrameObject({ top: event.pageY,left: event.pageX,height: 100 }); var frameObjects = new FrameObjects(); frameObjects.add(frameObject); var objectView = new ObjectView({ model: frameObject }); this.$el.append(objectView.render().el); setTimeout(function() { frameObject.set({ // 500 — width of #container top: Math.random() * 500,left: Math.random() * 500 }) },1000); } }); var appView = new AppView();
http://jsfiddle.net/theotheo/4Y8gy/
请注意,我对您的代码进行了一些更改.首先,我更改了AppView的事件哈希,或者更确切地说我省略了选择器,because
看起来它正是你想要的.其次,我删除了ObjectView的模板.当然,你可以使用它,但在这种情况下,我认为没有必要.第三,我重命名了变量for the sake of consistency.随意问.
以上是大佬教程为你收集整理的jquery – 使用Backbone.js创建后为HTML元素设置动画全部内容,希望文章能够帮你解决jquery – 使用Backbone.js创建后为HTML元素设置动画所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。