计划,每天学习两小时,坚持带来大改变。

Marionette :胜在区域管理(六)

前端开发 阿尤 3161浏览 0评论

在view创建好之后,一般要把它放到DOM中,这样才能把它显示出来。Backbone一般是用jQuery选择器,并设置结果对象的 html() :

显示view

var myModel = new MyModel({ firstName: 'Jeremy', lastName: 'Ashkenas', email: '[email protected]' }); var myView = new MyView({ model: myModel }) myView.render(); // show the view in the DOM $('#content').html(myView.el)

这还是那种比较繁琐的代码。我们不应该手工调用 render ,还手工选择显示view的DOM元素。另外,这些代码也没关闭之前附到DOM元素上的view实例。一大波僵尸正在朝你走来!

为了解决这个问题,Marionette 做了个Region对象 - 由它负责管理每个view的生命周期,以及在特定DOM元素中的显示。

Region对象

// create a region instance, telling it which DOM element to manage var myRegion = new Marionette.Region({ el: '#content' }); // show a view in the region var view1 = new MyView({ /* ... */ }); myRegion.show(view1); // somewhere else in the code, // show a different view var view2 = new MyView({ /* ... */ }); myRegion.show(view2);

上面的代码中有几个事儿需要注意。首先,我们要告诉region要管理哪个DOM元素,在region实例中指定el。其次,我们不用亲自调用view中的render方法。最后,我们也不用调用view中的close方法,Marionette替我们调用它了。

当我们用region管理view的生命周期,并在DOM中显示view时,region自己就会把这些问题处理掉。把view实例传给region的 show 方法,它会帮我们调用view上的render方法。然后会拿到view上的结果 el ,组装DOM元素。

我们再次调用 show 方法时,region知道它现在正在显示view。region会调用view上的 close 方法,把它从DOM上挪走,然后就运行新view上的 render & display代码。

既然region帮我们调用close,我们还在view实例上用bindTo 事件绑定器,就不用再担心程序中出现僵尸view了。


转自 :http://www.ituring.com.cn/article/31718

转载请注明:阿尤博客 » Marionette :胜在区域管理(六)

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • 验证码 (必填)点击刷新验证码