建设网站需要想好的问题,建仿网站,网络工程师职业分析,国外刺绣图案设计网站2019独角兽企业重金招聘Python工程师标准 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为禁用(disabled)状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现#xff0c;一旦下图第88行代码执行完毕之后#xff0c;这个按钮的… 2019独角兽企业重金招聘Python工程师标准 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为禁用(disabled)状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现一旦下图第88行代码执行完毕之后这个按钮的属性mProperties里就多出一个enabled:false的属性。 而88行执行之前还没有这个enabled:false的属性。正是这个属性让按钮进入了禁用状态。 我单步调试setModel函数花了半个小时的时间也没能找到这个enabled属性到底是在哪一行代码加进去的。 于是我只有寻求其他办法。我想到了Object.defineProperty这个方法 我在Chrome开发者工具里执行如下代码首先根据button的ID用ui.byId方法找到这个被禁用按钮的实例然后用Object.defineProperty给按钮实例的属性集合mProperties注入一个get方法实现体只有一个debugger语句。如此一来每次button的mProperties被访问时都会自动触发一个断点。而mProperties属性发生变化时必定会先产生读取动作因此断点停下来时我通过观察调用栈的上下文就能够找到是哪一行代码修改了mProperties。 var ui sap.ui.getCore();var button ui.byId(button97DXvDVKUawkYgK3YQVram_64);Object.defineProperty(button, mProperties, { get: function(){ debugger;}});现在就来试试。果然断点自动触发了。我成功找到了我在寻找的给mProperties添加了enabled false的代码位置。 要获取更多Jerry的原创技术文章请关注公众号汪子熙或者扫描下面二维码: 转载于:https://my.oschina.net/u/3771578/blog/2250659