CN108845856A - 数据绑定方法、装置、存储介质及设备 - Google Patents

数据绑定方法、装置、存储介质及设备 Download PDF

Info

Publication number
CN108845856A
CN108845856A CN201810593226.5A CN201810593226A CN108845856A CN 108845856 A CN108845856 A CN 108845856A CN 201810593226 A CN201810593226 A CN 201810593226A CN 108845856 A CN108845856 A CN 108845856A
Authority
CN
China
Prior art keywords
monitored object
data
eavesdropping target
view
monitored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810593226.5A
Other languages
English (en)
Other versions
CN108845856B (zh
Inventor
郑钦洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810593226.5A priority Critical patent/CN108845856B/zh
Publication of CN108845856A publication Critical patent/CN108845856A/zh
Application granted granted Critical
Publication of CN108845856B publication Critical patent/CN108845856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据绑定方法、装置、存储介质及设备,属于网络技术领域。方法包括:获取第一软件部件的至少一个被监听对象,第一软件部件为视图或者数据模型,被监听对象为视图元素或数据模型的数据参数;确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定;确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向监听对象发送通知消息,该通知消息中携带更新后的属性数据;调用监听对象,基于更新后的属性数据,对与第一软件部件存在逻辑关联的第二软件部件进行同步更新。本发明将多个被监听对象与同一个监听对象绑定,实现了统一监听,在代码实现上可有效减少代码冗余,极大地提高了开发效率。

Description

数据绑定方法、装置、存储介质及设备
技术领域
本发明涉及网络技术领域,特别涉及一种数据绑定方法、装置、存储介质及设备。
背景技术
数据绑定(Data Binding),是一种将提供者(provider)与消费者(consumer)进行关联并使其数据同步的技术。在UI(User Interface,用户界面)领域中,提供者和消费者涉及视图(View)和数据模型(Model),以双向绑定为例,视图和数据模型既为提供者也为消费者,即在双向绑定中,视图的变化能够实时让数据模型发生变化,而数据模型的变化也能够实时让视图发生变化。
以视图变化使得数据模型同步发生变化为例,相关技术在UI领域实现双向绑定时,通常是对视图的每个被监听对象的属性变化进行单独监听,即一个被监听对象绑定一个监听对象,当一个被监听对象的属性变化时,与其绑定的监听对象会将该属性变化同步更新至数据模型。
由于相关技术对视图的各个被监听对象的属性变化进行单独监听,所以在代码实现上存在代码冗余的缺陷,会致使开发效率较低。
发明内容
本发明实施例提供了一种数据绑定方法、装置、存储介质及设备,解决了相关技术存在的开发效率较低的问题。所述技术方案如下:
一方面,提供了一种数据绑定方法,所述方法包括:
获取第一软件部件的至少一个被监听对象,所述第一软件部件为视图或者数据模型,所述被监听对象为所述视图的视图元素或所述数据模型的数据参数;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述第一软件部件存在逻辑关联的第二软件部件进行同步更新。
另一方面,提供了一种数据绑定装置,所述装置包括:
获取模块,用于获取第一软件部件的至少一个被监听对象,所述第一软件部件为视图或者数据模型,所述被监听对象为所述视图的视图元素或所述数据模型的数据参数;
第一处理模块,用于当所述至少一个被监听对象与同一个功能关联时,将所述至少一个被监听对象与同一个监听对象绑定;
第二处理模块,用于确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
更新模块,用于调用所述监听对象,基于所述更新后的属性数据,对与所述第一软件部件存在逻辑关联的第二软件部件进行同步更新。
另一方面,提供了一种数据绑定方法,所述方法包括:
获取视图的至少一个被监听对象,所述被监听对象为所述视图的视图元素;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
在显示界面上检测到用户触发事件并确定所述用户触发事件用于更新所述被监听对象的属性数据,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述视图存在逻辑关联的数据模型进行同步更新。
另一方面,提供了一种数据绑定方法,所述方法包括:
获取数据模型的至少一个被监听对象,所述被监听对象为所述数据模型的数据参数;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述数据模型存在逻辑关联的视图进行同步更新。
另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的数据绑定方法。
另一方面,提供了一种用于数据绑定的设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的数据绑定方法。
本发明实施例提供的技术方案带来的有益效果是:
在获取到视图(数据模型)的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型(视图)的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种双向绑定的框架示意图;
图2是本发明实施例提供的一种数据刷新的流程示意图;
图3是本发明实施例提供的另一种数据刷新的流程示意图;
图4是本发明实施例提供的一种数据绑定方法的流程图;
图5是本发明实施例提供的第一种界面显示示意图;
图6是相关技术提供的一种监听过程的示意图;
图7是本发明实施例提供的一种通知机制的实现原理示意图;
图8是本发明实施例提供的一种数据绑定过程的示意图;
图9是本发明实施例提供的一种数据绑定方法的流程图;
图10是本发明实施例提供的一种释放对象的流程示意图;
图11是本发明实施例提供的一种数据绑定方法的流程图;
图12是本发明实施例提供的第二种界面显示示意图;
图13是本发明实施例提供的第三种界面显示示意图;
图14是本发明实施例提供的一种合成照片电影的流程示意图;
图15是本发明实施例提供的一种监听的流程示意图;
图16是本发明实施例提供的一种数据绑定方法的流程图;
图17是本发明实施例提供的一种数据绑定方法的整理流程示意图;
图18是本发明实施例提供的一种数据绑定装置结构示意图;
图19是本发明实施例提供的一种用于数据绑定的设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及到的一些名词进行解释说明。
数据绑定:是将提供者与消费者进行关联并使其数据同步的一种通用技术。其中,数据绑定分为单向绑定和双向绑定。在UI领域,单向绑定:数据模型的变化能实时让视图变化,即,单向绑定是数据模型更新触发视图更新,比如,当用JavaScript代码更新数据模型时,视图便会自动更新。
双向绑定:视图的变化能实时让数据模型发生变化,而数据模型的变化也会让视图发生变化,即,双向绑定使得UI上的用户操作能实时反映到数据层面,而数据层面的变化也能实时展现到UI上。
举例来说,针对一个user对象和一个name属性,赋一个新值给user.name,则在UI上便会显示user对象的新姓名。同样地,如果UI上包含一个用于输入用户姓名的输入框,则用户在该输入框中输入一个新值后,便会在数据层面使得user对象的name属性做出相应的改变。
需要说明的是,区别于单向绑定的数据模型更新触发视图更新,双向绑定在开发过程中可以极大地提高开发效率。
视图:应用程序中处理数据显示的部分,通过加载视图使得用户能够在显示屏幕上看到与之进行交互的界面,通常视图是依据数据模型创建的,二者存在逻辑关联,例如,用户在界面执行相关触发操作,便可触发视图元素与数据参数之间的数据传递。
数据模型:应用程序中用于处理应用程序数据逻辑的部分,示例性地,数据模型可负责在数据库中存取数据。
下面对本发明实施例提供的数据绑定方法所涉及的实施环境进行介绍。
本发明实施例提供的数据绑定方法应用于移动设备。其中,移动设备的类型包括但不限于手机、平板电脑、笔记本电脑等,本发明实施例对此不进行具体限定。
在一个示例性地实施方式中,上述数据绑定方法应用于基于ios平台的移动设备,即,本发明实施例提供了一种在ios平台上使用的双向绑定框架,用于在ios开发过程中对数据模型和视图进行双向同步更新,使得视图的变化更够实时让数据模型变化,反之,数据模型的变化也更够实时让视图变化。
详细来讲,ios工程项目原始使用MVC(Model View Controller,数据模型-视图-控制器)架构,而在项目不断迭代的过程中,代码量级越来越大,致使工程代码越来越冗余,MVC架构已经不能满足ios工程项目的日常开发和维护。为此,逐步由MVC架构演进为MVVM(Model-View-ViewModel,数据模型-视图-视图模型)架构,但是在架构演进过程中出现了数据模型和视图的绑定问题,即系统原生没有提供一个良好的双向绑定框架,为此,本发明实施例在原生系统上提供了一个双向绑定框架,用于在ios开发过程中实现双向绑定。
另外,在ios开发过程中,由于系统原生提供的框架里并没有直接实现双向绑定的模块,所以为了实现双向绑定,在相关技术中,通常是采用kvo(key-value-observing键值观察模式),或者,使用NotificationCenter(通知中心)模式,或者,采用开源的第三方框架来进行模拟实现。
针对采用kvo来模拟双向绑定的实现方式,由于系统并没有提供良好的API(Application Programming Interface,应用程序编程接口),所以在开发过程中需要不断地绑定观察者的值,并在统一的回调代理方法中进行返回,这会导致开发过程中的所有值均会走到这个统一的回调代理方法,所以需要进行不断地区分判断,以辨别不同的值,且如果不同的观察者观察的keypath(路径)相同,则还需要使用静态变量进行绑定,以区分不同的观察者,这不但会污染开发环境的数据,而且不容易进行管理。
针对采用通知中心模拟双向绑定的实现方式,系统提供了一套额外的状态值变化通知模式,即通知中心。在应用启动过程中,系统默认生成了一个全局的通知中心,可以在整个应用开发过程中进行传值,可以跨越不同的模块。然而,通知中心仅能传递一些单一的变量,在传递一些复杂的变量的时候需要进行自定义,并且通知中心在处理消息的时候会存在延迟,致使在一些情况下不适合所需的开发模式。
针对采用第三方框架实现双向绑定的方式,以ReactCocoa框架为例,它将函数式编程带进了ObjectiveC语言中,借鉴了Haskell的语法,使得在开发过程中可以用信号流的模式来代替原有的开发模式。即,将每一个事件高度抽象为一个信号,并且将信号源源不断地传递给订阅者。其中,订阅者与前文提及的观察者类似,均是用于监听其他对象的属性变化。然而,这样的修改不但需将原有的开发模式转变为函数式编程模式,侵入性过强,且在后续过程中,如果需要使用其他类型的第三方框架来实现双向绑定,则需要对整个项目进行重构,不利于代码维护。且,在修改为信号流模式后,全局的崩溃日志会进入处理信号流的函数中,不利于对线上问题进行追踪,导致原有日志系统无法使用。
为了避免出现上述问题,本发明实施例在系统原有的框架上进行封装和抽象来实现双向绑定,因此本发明实施例的双向绑定方式不具有侵入性,不会影响原有工程代码的开发模式,使用与卸载不需要改动代码,有利于代码维护。具体地,如图1所示,本发明实施例在视图和数据模型之间引入了绑定(binding)模块,用来在视图变化时同步刷新数据模型,以及,在数据模型变化时同步刷新视图。
如图2所示,在引入绑定模块后,以视图角度为例,在用户触发事件触发视图变化后,绑定模块刷新数据的流程为:a、视图上的用户触发事件触发视图变化;b、同步刷新数据模型;c、刷新用户配置,保存用户配置。
其中,用户触发事件包括但不限于用户点击操作,用户在输入框中的输入操作等,本发明实施例对此不进行具体限定。另外,在刷新数据模型后,通过刷新以及保存用户配置使得本次对数据的修改保存至数据库中。
如图3所示,在引入绑定模块后,以数据模型角度为例,绑定模块刷新数据的流程为:获取到网络数据生成数据模型,之后,反向刷新视图。示例性地,视图生成过程可为:创建视图,加载用户配置并通过加载视图展现用户配置。
举例来说,某些功能或应用会存在一些基本配置,比如开发人员事先利用代码写好一些基本配置数据,那么基于数据库中存储的这些基本配置修改数据模型后,绑定模块也会同步对视图进行刷新,即通过视图来展现这些事先预置的用户配置。
在上述视图变化同步刷新数据模型或数据模型变化同步刷新视图过程中,在获取到视图(数据模型)的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在上述任意数目个被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型(视图)的同步更新,其中,被监听对象指代需要进行属性监听的对象,也可称为被观察对象,具体指代视图的视图元素或数据模型的数据参数,而监听对象用于对被监听对象的属性变化进行监听,监听对象也可称为观察者或订阅者。由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
下面通过详细的实施方式对本发明实施例提供的数据绑定方法进行说明。
本发明实施例以第一软件部件和第二软件部件指代视图和数据模型,当第一软件部件为视图时,第二软件部件为数据模型,当第一软件部件为数据模型时,第二软件部件为视图。以第一软件部件的更新使得第二软件部件更新为例,若第一软件部件为视图,则第一软件部件的被监听对象为视图的视图元素,若第一软件部件为数据模型,则第一软件部件的被监听对象为数据模型的数据参数。在视图元素与数据参数之间的数据传递过程中,本发明实施例实现了视图的更新触发数据模型更新,数据模型的更新触发视图更新。
图4是本发明实施例提供的一种数据绑定方法的流程图,该方法的执行主体为绑定模块。以视图的变化同步刷新数据模型为例,参见图4,本发明实施例提供的方法流程包括:
401、获取视图的至少一个被监听对象,确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定,被监听对象为视图的视图元素。
以图5为例,图5中的选择照片选项、音乐选项、标题选项、结束页文字选项、显示标签选项均可称之为一个被监听对象。以音乐选项为例,假设当前的背景音乐为A歌曲,那么监听对象便负责监听是否当前背景音乐是否由A歌曲切换到为其他歌曲。
需要说明的第一点是,在本发明实施例中,监听对象对被监听对象的监听,实质上属于一种被动的监听模式,即当被监听对象的属性发生改变时,基于本发明实施例提供的双向绑定框架会主动通知到监听对象。
另外,本发明实施例为了降低代码冗余,提高开发侧的开发效率,会将多个被监听对象绑定一个监听对象。具体地,当多个被监听对象与同一个功能关联时,可将这多个被监听对象与同一个监听对象绑定。
需要说明的第二点是,与同一个功能关联的含义包括但不限于:多个被监听对象对应同一个功能,比如图5中的选择照片选项、音乐选项、标题选项、结束页文字选项、显示标签选项均对应照片电影合成功能;或者,多个被监听对象对应一个功能的同一套事件处理流程,以图6为例,针对滤镜选择、音乐选择、标签选择以及照片选择等来说,均对应同样的监听修改以及合成电影流程。
402、确定至少一个被监听对象中存在属性数据发生更新的被监听对象,向监听对象发送通知消息,该通知消息中携带更新后的属性数据。
在本发明实施例中,被监听对象的属性发生变化后所触发的通知机制本质上是一种观察者设计模式,它提供了一种机制,当被监听对象的属性被修改后,监听对象会收到一个通知,即,每次被监听对象的属性被修改后,便会自动通知相应的监听对象。如图7所示,当某个对象第一次被监听时,会自动为这个对象的原始类创建一个派生类,该派生类继承于该原始类,并且将该对象的isa指针指向该派生类。
此外,为了激活通知机制,还会在该派生类中重写该对象的setter方法,实现在被监听对象的属性修改的时候,通过该种通知机制主动向监听对象发送通知,以通知监听对象进行相应处理。换一种表达方式,由于将被监听对象的isa指针指向了该派生类,因此这个被监听对象便成为了该派生类的对象,所以在该对象上对setter方法的调用,便会调用重写的setter方法,从而激活kvo通知机制。即,在被监听对象的属性修改后,通过上述通知机制会将这一修改事件传递给监听对象,具体地,这一修改事件可通过调用监听对象的方法进行传递,并且,还会将修改后的属性值传递给监听对象,以使得监听对象进行数据模型刷新或者视图刷新。另外,派生类还可以重写class方法以欺骗外部调用者它就是原始类。
基于上述描述,在本发明实施例中,当被监听对象中存在属性数据更新时,基于本发明实施例提供的双向绑定框架,会主动向监听对象发送通知消息。其中,该通知消息中携带更新后的属性数据。
需要说明的第一点是,为了能够在属性变化时触发主动通知,本发明实施例还会通过下述方式来激活通知机制:为至少一个监听对象的原始类创建一个派生类,该派生类继承于该原始类;将至少一个被监听对象isa指针指向派生类,并在派生类中重写至少一个被监听对象的setter方法,从而激活通知机制。
需要说明的第二点是,在属性修改后,本发明实施例可采用回调监听对象的指定方法,来向监听对象发送通知消息。其中,这个指定方法可在被监听对象与监听对象绑定时由监听对象提供,本发明实施例对此不进行具体限定。
403、调用监听对象,基于更新后的属性数据,对与视图存在逻辑关联的数据模型进行同步更新。
以上描述列举了视图变化同步刷新数据模型的过程,针对数据模型变化同步刷新视图的过程,与上述过程类似,此处不再赘述。
本发明实施例提供的方法,在获取到视图(数据模型)的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型(视图)的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
在另一个实施方式中,参见图8,以视图更新同步刷新数据模型角度为例,本发明实施例还会在新创建的派生类里声明一个容器,也可称之为集合,以用这个容器来存储被监听对象的路径信息。即,参见图9,本发明实施例还包括下述步骤:
901、获取视图的至少一个被监听对象,确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定,被监听对象为视图的视图元素。
与上述步骤401同理,此处不再赘述。
902、确定至少一个被监听对象中存在属性数据发生更新的被监听对象,向监听对象发送通知消息,该通知消息中携带更新后的属性数据。
与上述步骤402同理,此处不再赘述。
903、调用监听对象,基于更新后的属性数据,对与第一软件部件存在逻辑关联的第二软件部件进行同步更新。
与上述步骤403同理,此处不再赘述。
904、在继承于至少一个被监听对象的原始类的派生类中创建一个容器,并将被监听对象的属性数据的路径信息添加到这个容器。
其中,路径信息指示的路径用于保存属性数据,即路径信息提供了一个路径用于修改属性数据,因此这些路径信息也可称之为被监听的keypath。而本发明实施例之所以要创建一个容器,其目的在于在监听对象要被释放的时候,可以直接在这个容器中找到需要移除监听的keypath。
905、在释放监听对象时,将该容器中包含的路径信息移除,在该容器中包含的路径信息移除完毕后,释放监听对象。
众所周知,在释放对象销毁内存的时候,如果没有进行移除监听,则会导致应用崩溃,示例性地,参见图10,本发明实施例采取下述方式对内存管理做接管:在释放监听对象时,首先将容器中包含的keypath移除,在将容器中包含的路径信息移除完毕后,再释放监听对象。具体地,将容器中包含的keypath移除时,可采取下述方式实现:通过Method-Swizzling方式,将每一个被监听对象的析构方法(dealloc)替换为目标移除监听方法,之后,调用目标移除监听方法,将容器中包含的keypath移除。其中,目标移除监听方法由监听对象提供,本发明实施例对此不进行具体限定。
以上描述列举了视图变化同步刷新数据模型的过程,针对数据模型变化同步刷新视图的过程,与上述过程类似,此处不再赘述。
综上所述,本发明实施例所产生的有益效果至少包括:
本发明实施例提供的方法,在获取到视图(数据模型)的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型(视图)的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
另外,本发明实施例在释放监听对象时,通过添加的容器可实现一次性地移除被监听的全部路径信息,为合理回收系统的内存资源提供了便利。
在另一个实施例中,在产品侧角度,以视图的变化同步刷新数据模型为例,参见图11,本发明实施例提供的数据绑定方法的流程包括:
1101、获取视图的至少一个被监听对象,确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定,被监听对象为视图的视图元素。
以相册管家应用为例,相册管家应用具备的一个功能为制作照片电影。其中,用户在执行诸如切换背景音乐、选择标签、切换照片等一系列会导致视图变化的触发事件后,本发明实施例会根据用户对视图的修改来同步刷新数据模型。以图5为例,图5中的选择照片选项、音乐选项、标题选项、结束页文字选项、显示标签选项均可称之为一个被监听对象,而上述每一个被监听对象均与合成照片电影这个功能关联,因此可将上述各个被监听对象与同一个监听对象绑定。
1102、在显示界面上检测到用户触发事件并确定该用户触发事件用于更新被监听对象的属性数据,向监听对象发送通知消息,该通知消息中携带更新后的属性数据。
在制作照片电影时操作流程包括但不限于:(1)、参见图12,终端进入照片电影的预览页面,从数据库中读取用户存储的照片和照片电影的基础配置信息进行呈现;(2)、检测到用户点击图12中右下角的编辑按钮,终端跳转至编辑页面,如图5所示,在编辑页面上用户可以进行滤镜选择、标签选择、背景音乐选择等,而上述任一种用户选择操作均会触发视图变化,即,上述任一种选择操作均可称之为一个用户触发事件。(3)、以用户点击编辑页面上的选择照片选项为例,则终端跳转至图13所示的照片编辑页面,以便用户选择用于制作照片电影的照片。之后,如图14所示,照片电影的合成器根据用户的滤镜选择、音乐选择、标签选择等,以及选中的照片资源进行刷新处理,合成照片电影。
针对上述合成照片电影的过程,如图6所示,每当用户进行一次视图上的选择修改,均需要做对应的刷新,重新合成照片电影。在相关技术中,虽然每次选择修改均是执行同样的操作,但是需要对每个在视图上的选择修改进行单独监听,即需要对一个个被监听对象进行单独监听,致使开发效率大大降低。而本发明实施例在ios系统中引入了双向绑定之后,参见图15,可实现将多个被监听对象进行统一监听,在代码实现上,不用重复写冗余代码,极大地提高了开发侧的开发效率。
1103、调用监听对象,基于更新后的属性数据,对与视图存在逻辑关联的数据模型进行同步更新。
本发明实施例提供的方法,在获取到视图的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
图16是本发明实施例提供的一种数据绑定方法的流程图,以数据模型的变化同步刷新数据模型为例,参见图16,本发明实施例提供的方法流程包括:
1601、获取数据模型的至少一个被监听对象,确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定被监听对象为数据模型的数据参数。
继续以相册管家应用为例,假设数据模型的变化触发视图变化,则在用户点击故事页面已保存的照片电影后,同理,本发明实施例需要根据新生成的数据模型同步对视图进行刷新。即本发明实施例会加载用户选中的照片电影的用户配置,并根据该用户配置对上述背景音乐、标签、照片等选项做出不同的视图变化,以使UI展现与数据模型一致。比如,当前在UI上展示的背景音乐为A歌曲,而用户点选的照片电影的背景音乐为B歌曲,则在UI上也要做出由A歌曲切换为B歌曲的视图变化,使得数据模型的变化与视图变化一致。
1602、确定至少一个被监听对象中任意数目个被监听对象的属性数据发生更新,向监听对象发送通知消息,通知消息中携带更新后的属性数据。
1603、调用监听对象,基于更新后的属性数据,对与数据模型存在逻辑关联的视图进行同步更新。
本发明实施例提供的方法,在获取到数据模型的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成视图的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
综上所述,本发明实施例在系统原有的框架上进行封装和抽象实现了双向绑定。参见图17,基于本发明实施例提供的双向绑定框架,本发明实施例提供的数据绑定方法可梳理为下述步骤:
步骤a、获取第一软件部件的至少一个被监听对象。
步骤b、确定至少一个被监听对象与同一个功能关联,将至少一个被监听对象与同一个监听对象绑定。
步骤c、确定至少一个被监听对象中存在属性数据发生更新的被监听对象,向监听对象发送通知消息,该通知消息中携带更新后的属性数据。
步骤d、调用监听对象,基于更新后的属性数据,对与第一软件部件存在逻辑关联的第二软件部件进行同步更新。
步骤e、在继承于至少一个被监听对象的原始类的派生类中创建一个容器,并将被监听对象的属性数据的路径信息添加到这个容器。
步骤f、在释放监听对象时,将该容器中包含的路径信息移除,在容器中包含的路径信息移除完毕后,释放监听对象。
综上所述,基于前文描述,本发明实施例提供的双向绑定框架以及基于双向绑定框架的数据绑定方法至少具有以下有益效果:
在视图元素与数据参数之间的数据传递过程中,本发明实施例可将多个被监听对象与同一个监听对象绑定,实现了统一监听,减少了代码冗余,极大地提高了开发效率,以及双向绑定框架的可维护性。
在监听对象即将释放被系统回收内存时,能够通过添加的容器一次性移除全部被监听对象,为合理回收系统的内存资源提供了便利。
另外,本发明实施例提供的双向绑定框架具有低耦合以及高内聚的特点,能够减少代码冗余,提高开发效率,使得视图和数据模型高度关联。其中,耦合性也称块间联系,是软件系统结构中各模块间相互联系紧密程度的一种度量,模块之间联系越紧密,其耦合性越强,模块的独立性越差。内聚性又称块内联系,是模块的功能强度的一种度量,即,一个模块内部各个元素彼此结合紧密程度的一种度量,一个模块内各个元素之间联系的越紧密,则它的内聚性越高。
另外,基于本发明实施例提出的双向绑定机制,在诸如相册管家等需要高度与用户交互配合的应用中,双向绑定机制可以大幅助力产品侧,能够有效降低交互页面的开发成本,因此能够助力开发人员为应用开发出更多交互页面、功能以及提供更为丰富的用户配置,有效地改善了用户体验。
图18是本发明实施例提供的一种数据绑定装置的结构示意图。参见图18,该装置包括:
获取模块1801,用于获取第一软件部件的至少一个被监听对象,所述第一软件部件为视图或者数据模型,所述被监听对象为所述视图的视图元素或所述数据模型的数据参数;
第一处理模块1802,用于确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
第二处理模块1803,用于确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
更新模块1804,用于调用所述监听对象,基于所述更新后的属性数据,对与所述第一软件部件存在逻辑关联的第二软件部件进行同步更新。
本发明实施例提供的装置,在获取到视图(数据模型)的至少一个被监听对象后,若确定至少一个被监听对象与同一个功能关联,则本发明实施例会将至少一个被监听对象与同一个监听对象绑定,从而实现在任意数目个上述被监听对象的属性数据发生更新后,通过向绑定的监听对象发送通知消息来完成数据模型(视图)的同步更新,由于在视图的视图元素与数据模型的数据参数之间的数据传递过程中,本发明实施例能够将与同一个功能关联的多个被监听对象和同一个监听对象绑定,因此实现了统一监听,在代码实现上可有效减少代码冗余,极大提高了开发效率。
在另一个实施方式中,所述第二处理模块,还用于为所述至少一个监听对象的原始类创建一个派生类,所述派生类继承于所述原始类;将所述至少一个被监听对象的目标指针指向所述派生类,并在所述派生类中重写所述至少一个被监听对象的目标封装装置,激活通知机制;在所述至少一个被监听对象中任意数目个被监听对象的属性数据发生更新后,回调所述监听对象的指定装置,向所述监听对象发送所述通知消息。
在另一个实施方式中,该装置还包括:
创建模块,用于在所述派生类中创建一个容器;
添加模块,用于将所述至少一个被监听对象的属性数据的路径信息添加到所述容器;
其中,所述路径信息指示的路径用于保存所述属性数据。
在另一个实施方式中,该装置还包括:
第三处理模块,用于在释放所述监听对象时,将所述容器中包含的路径信息移除;在所述容器中包含的路径信息移除完毕后,释放所述监听对象。
在另一个实施方式中,所述第三处理模块,还用于将所述至少一个被监听对象的析构装置替换为目标移除监听装置;调用所述目标移除监听装置,将所述容器中包含的路径信息移除。
在另一个实施方式中,当所述第一软件部件为所述视图时,所述第二软件部件为所述数据模型;或,当所述第一软件部件为所述数据模型时,所述第二软件部件为所述视图。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据绑定装置在进行数据绑定时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据绑定装置与数据绑定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图19示出了本发明一个示例性实施例提供的用于数据绑定的设备1900的结构框图。该设备1900可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。设备1900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,设备1900包括有:处理器1901和存储器1902。
处理器1901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1901所执行以实现本申请中方法实施例提供的数据绑定方法。
在一些实施例中,设备1900还可选包括有:外围设备接口1903和至少一个外围设备。处理器1901、存储器1902和外围设备接口1903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1903相连。具体地,外围设备包括:射频电路1904、触摸显示屏1905、摄像头1906、音频电路1907、定位组件1908和电源1909中的至少一种。
外围设备接口1903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1901和存储器1902。在一些实施例中,处理器1901、存储器1902和外围设备接口1903被集成在同一芯片或电路板上;在一些其他实施例中,处理器1901、存储器1902和外围设备接口1903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1905是触摸显示屏时,显示屏1905还具有采集在显示屏1905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1901进行处理。此时,显示屏1905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1905可以为一个,设置设备1900的前面板;在另一些实施例中,显示屏1905可以为至少两个,分别设置在设备1900的不同表面或呈折叠设计;在再一些实施例中,显示屏1905可以是柔性显示屏,设置在设备1900的弯曲表面上或折叠面上。甚至,显示屏1905还可以设置成非矩形的不规则图形,也即异形屏。显示屏1905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1906用于采集图像或视频。可选地,摄像头组件1906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1901进行处理,或者输入至射频电路1904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在设备1900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1901或射频电路1904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1907还可以包括耳机插孔。
定位组件1908用于定位设备1900的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1908可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1909用于为设备1900中的各个组件进行供电。电源1909可以是交流电、直流电、一次性电池或可充电电池。当电源1909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,设备1900还包括有一个或多个传感器1910。该一个或多个传感器1910包括但不限于:加速度传感器1911、陀螺仪传感器1912、压力传感器1913、指纹传感器1914、光学传感器1915以及接近传感器1916。
加速度传感器1911可以检测以设备1900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1911可以用于检测重力加速度在三个坐标轴上的分量。处理器1901可以根据加速度传感器1911采集的重力加速度信号,控制触摸显示屏1905以横向视图或纵向视图进行用户界面的显示。加速度传感器1911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1912可以检测设备1900的机体方向及转动角度,陀螺仪传感器1912可以与加速度传感器1911协同采集用户对设备1900的3D动作。处理器1901根据陀螺仪传感器1912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1913可以设置在设备1900的侧边框和/或触摸显示屏1905的下层。当压力传感器1913设置在设备1900的侧边框时,可以检测用户对设备1900的握持信号,由处理器1901根据压力传感器1913采集的握持信号进行左右手识别或快捷操作。当压力传感器1913设置在触摸显示屏1905的下层时,由处理器1901根据用户对触摸显示屏1905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1914用于采集用户的指纹,由处理器1901根据指纹传感器1914采集到的指纹识别用户的身份,或者,由指纹传感器1914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1914可以被设置设备1900的正面、背面或侧面。当设备1900上设置有物理按键或厂商Logo时,指纹传感器1914可以与物理按键或厂商Logo集成在一起。
光学传感器1915用于采集环境光强度。在一个实施例中,处理器1901可以根据光学传感器1915采集的环境光强度,控制触摸显示屏1905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1905的显示亮度;当环境光强度较低时,调低触摸显示屏1905的显示亮度。在另一个实施方式中,处理器1901还可以根据光学传感器1915采集的环境光强度,动态调整摄像头组件1906的拍摄参数。
接近传感器1916,也称距离传感器,通常设置在设备1900的前面板。接近传感器1916用于采集用户与设备1900的正面之间的距离。在一个实施例中,当接近传感器1916检测到用户与设备1900的正面之间的距离逐渐变小时,由处理器1901控制触摸显示屏1905从亮屏状态切换为息屏状态;当接近传感器1916检测到用户与设备1900的正面之间的距离逐渐变大时,由处理器1901控制触摸显示屏1905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图18中示出的结构并不构成对设备1800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种数据绑定方法,其特征在于,所述方法包括:
获取第一软件部件的至少一个被监听对象,所述第一软件部件为视图或者数据模型,所述被监听对象为所述视图的视图元素或所述数据模型的数据参数;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述第一软件部件存在逻辑关联的第二软件部件进行同步更新。
2.根据权利要求1所述的方法,其特征在于,所述确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,包括:
为所述至少一个监听对象的原始类创建一个派生类,所述派生类继承于所述原始类;
将所述至少一个被监听对象的目标指针指向所述派生类,并在所述派生类中重写所述至少一个被监听对象的目标封装方法,激活通知机制;
在所述至少一个被监听对象中任意数目个被监听对象的属性数据发生更新后,回调所述监听对象的指定方法,向所述监听对象发送所述通知消息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述派生类中创建一个容器;
将所述至少一个被监听对象的属性数据的路径信息添加到所述容器;
其中,所述路径信息指示的路径用于保存所述属性数据。
4.根据权利要求3所述的方法,其特征在于,在释放所述监听对象时,所述方法还包括:
将所述容器中包含的路径信息移除;
在所述容器中包含的路径信息移除完毕后,释放所述监听对象。
5.根据权利要求4所述的方法,其特征在于,所述将所述容器中包含的路径信息移除,包括:
将所述至少一个被监听对象的析构方法替换为目标移除监听方法;
调用所述目标移除监听方法,将所述容器中包含的路径信息移除。
6.根据权利要求1至5中任一权利要求所述的方法,其特征在于,当所述第一软件部件为所述视图时,所述第二软件部件为所述数据模型;或,
当所述第一软件部件为所述数据模型时,所述第二软件部件为所述视图。
7.一种数据绑定方法,其特征在于,所述方法包括:
获取视图的至少一个被监听对象,所述被监听对象为所述视图的视图元素;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
在显示界面上检测到用户触发事件并确定所述用户触发事件用于更新所述被监听对象的属性数据,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述视图存在逻辑关联的数据模型进行同步更新。
8.一种数据绑定方法,其特征在于,所述方法包括:
获取数据模型的至少一个被监听对象,所述被监听对象为所述数据模型的数据参数;
确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
调用所述监听对象,基于所述更新后的属性数据,对与所述数据模型存在逻辑关联的视图进行同步更新。
9.一种数据绑定装置,其特征在于,所述装置包括:
获取模块,用于获取第一软件部件的至少一个被监听对象,所述第一软件部件为视图或者数据模型,所述被监听对象为所述视图的视图元素或所述数据模型的数据参数;
第一处理模块,用于确定所述至少一个被监听对象与同一个功能关联,将所述至少一个被监听对象与同一个监听对象绑定;
第二处理模块,用于确定所述至少一个被监听对象中存在属性数据发生更新的被监听对象,向所述监听对象发送通知消息,所述通知消息中携带更新后的属性数据;
更新模块,用于调用所述监听对象,基于所述更新后的属性数据,对与所述第一软件部件存在逻辑关联的第二软件部件进行同步更新。
10.根据权利要求9所述的装置,其特征在于,所述第二处理模块,还用于为所述至少一个监听对象的原始类创建一个派生类,所述派生类继承于所述原始类;将所述至少一个被监听对象的目标指针指向所述派生类,并在所述派生类中重写所述至少一个被监听对象的目标封装装置,激活通知机制;在所述至少一个被监听对象中任意数目个被监听对象的属性数据发生更新后,回调所述监听对象的指定装置,向所述监听对象发送所述通知消息。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
创建模块,用于在所述派生类中创建一个容器;
添加模块,用于将所述至少一个被监听对象的属性数据的路径信息添加到所述容器;
其中,所述路径信息指示的路径用于保存所述属性数据。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第三处理模块,用于在释放所述监听对象时,将所述容器中包含的路径信息移除;在所述容器中包含的路径信息移除完毕后,释放所述监听对象。
13.根据权利要求12所述的装置,其特征在于,所述第三处理模块,还用于将所述至少一个被监听对象的析构装置替换为目标移除监听装置;调用所述目标移除监听装置,将所述容器中包含的路径信息移除。
14.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至6中任一个权利要求所述的数据绑定方法。
15.一种用于数据绑定的设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至6中任一个权利要求所述的数据绑定方法。
CN201810593226.5A 2018-06-11 2018-06-11 基于对象的同步更新方法、装置、存储介质及设备 Active CN108845856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810593226.5A CN108845856B (zh) 2018-06-11 2018-06-11 基于对象的同步更新方法、装置、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810593226.5A CN108845856B (zh) 2018-06-11 2018-06-11 基于对象的同步更新方法、装置、存储介质及设备

Publications (2)

Publication Number Publication Date
CN108845856A true CN108845856A (zh) 2018-11-20
CN108845856B CN108845856B (zh) 2021-12-14

Family

ID=64210666

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810593226.5A Active CN108845856B (zh) 2018-06-11 2018-06-11 基于对象的同步更新方法、装置、存储介质及设备

Country Status (1)

Country Link
CN (1) CN108845856B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634599A (zh) * 2018-12-14 2019-04-16 北京字节跳动网络技术有限公司 页面视图的显示方法、装置、设备及存储介质
CN110308901A (zh) * 2019-05-21 2019-10-08 平安普惠企业管理有限公司 处理前端页面中数据变量方法、装置、设备和存储介质
CN110515605A (zh) * 2019-08-20 2019-11-29 网易(杭州)网络有限公司 属性信息的同步方法及装置、存储介质和处理器
CN110543306A (zh) * 2019-07-19 2019-12-06 石化盈科信息技术有限责任公司 交互式数据可视化方法及应用系统、存储介质
CN111176632A (zh) * 2020-01-02 2020-05-19 山东浪潮通软信息科技有限公司 一种iOS端响应式开发框架的搭建方法
CN111352672A (zh) * 2018-12-24 2020-06-30 北京微播视界科技有限公司 页面的同步方法、装置、电子设备及计算机可读存储介质
CN111432291A (zh) * 2020-03-20 2020-07-17 稿定(厦门)科技有限公司 视频分段取帧场景下的视图更新方法及装置
CN111679826A (zh) * 2020-04-27 2020-09-18 平安国际智慧城市科技股份有限公司 实时预览网页编辑内容的方法、装置、设备及存储介质
CN112306668A (zh) * 2019-07-31 2021-02-02 腾讯科技(深圳)有限公司 对象回收事件监听方法、装置和计算机可读存储介质
CN112835762A (zh) * 2021-01-29 2021-05-25 北京奇艺世纪科技有限公司 数据处理方法和装置、存储介质和电子设备
CN113805910A (zh) * 2020-11-26 2021-12-17 北京沃东天骏信息技术有限公司 一种应用中的数据共享的方法及系统
WO2022017458A1 (zh) * 2020-07-23 2022-01-27 北京字节跳动网络技术有限公司 同步数据方法、装置、电子设备和介质
CN114079658A (zh) * 2020-08-03 2022-02-22 荣耀终端有限公司 跨设备同步方法、终端设备及存储介质
WO2022083477A1 (zh) * 2020-10-22 2022-04-28 华为技术有限公司 一种mvvm架构的应用的开发方法及终端
CN114443992A (zh) * 2021-12-13 2022-05-06 北京国电通网络技术有限公司 数据可视化展示方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1684035A (zh) * 2004-04-13 2005-10-19 微软公司 优先级绑定
CN105915657A (zh) * 2016-06-30 2016-08-31 北京奇虎科技有限公司 数据的同步方法、装置及客户端
US20160357520A1 (en) * 2015-06-02 2016-12-08 Sap Portals Israel Ltd. Data binding for model-based code generation
CN106302008A (zh) * 2016-08-05 2017-01-04 腾讯科技(深圳)有限公司 数据更新方法和装置
CN106446292A (zh) * 2016-11-16 2017-02-22 北京集奥聚合科技有限公司 一种前端数据双向绑定的实现方法及装置
CN106484412A (zh) * 2016-09-30 2017-03-08 浙江大学 一种基于访问器劫持的前端数据双向绑定实现方法
CN107832350A (zh) * 2017-10-20 2018-03-23 金蝶软件(中国)有限公司 一种web数据双向绑定的方法、装置、终端及存储介质
US20180157400A1 (en) * 2014-10-05 2018-06-07 Splunk Inc. Statistics Time Chart Interface Row Mode Drill Down

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1684035A (zh) * 2004-04-13 2005-10-19 微软公司 优先级绑定
US20180157400A1 (en) * 2014-10-05 2018-06-07 Splunk Inc. Statistics Time Chart Interface Row Mode Drill Down
US20160357520A1 (en) * 2015-06-02 2016-12-08 Sap Portals Israel Ltd. Data binding for model-based code generation
CN105915657A (zh) * 2016-06-30 2016-08-31 北京奇虎科技有限公司 数据的同步方法、装置及客户端
CN106302008A (zh) * 2016-08-05 2017-01-04 腾讯科技(深圳)有限公司 数据更新方法和装置
CN106484412A (zh) * 2016-09-30 2017-03-08 浙江大学 一种基于访问器劫持的前端数据双向绑定实现方法
CN106446292A (zh) * 2016-11-16 2017-02-22 北京集奥聚合科技有限公司 一种前端数据双向绑定的实现方法及装置
CN107832350A (zh) * 2017-10-20 2018-03-23 金蝶软件(中国)有限公司 一种web数据双向绑定的方法、装置、终端及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CREABINE: "《Vue 双向绑定的原理及实现Demo》", 《HTTPS://BLOG.CSDN.NET/CREABINE/ARTICLE/DETAILS/59201837》 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634599A (zh) * 2018-12-14 2019-04-16 北京字节跳动网络技术有限公司 页面视图的显示方法、装置、设备及存储介质
CN111352672A (zh) * 2018-12-24 2020-06-30 北京微播视界科技有限公司 页面的同步方法、装置、电子设备及计算机可读存储介质
CN110308901A (zh) * 2019-05-21 2019-10-08 平安普惠企业管理有限公司 处理前端页面中数据变量方法、装置、设备和存储介质
CN110543306A (zh) * 2019-07-19 2019-12-06 石化盈科信息技术有限责任公司 交互式数据可视化方法及应用系统、存储介质
CN112306668A (zh) * 2019-07-31 2021-02-02 腾讯科技(深圳)有限公司 对象回收事件监听方法、装置和计算机可读存储介质
CN110515605A (zh) * 2019-08-20 2019-11-29 网易(杭州)网络有限公司 属性信息的同步方法及装置、存储介质和处理器
CN110515605B (zh) * 2019-08-20 2023-08-22 网易(杭州)网络有限公司 属性信息的同步方法及装置、存储介质和处理器
CN111176632A (zh) * 2020-01-02 2020-05-19 山东浪潮通软信息科技有限公司 一种iOS端响应式开发框架的搭建方法
CN111432291B (zh) * 2020-03-20 2021-11-05 稿定(厦门)科技有限公司 视频分段取帧场景下的视图更新方法及装置
CN111432291A (zh) * 2020-03-20 2020-07-17 稿定(厦门)科技有限公司 视频分段取帧场景下的视图更新方法及装置
CN111679826A (zh) * 2020-04-27 2020-09-18 平安国际智慧城市科技股份有限公司 实时预览网页编辑内容的方法、装置、设备及存储介质
CN111679826B (zh) * 2020-04-27 2024-04-05 深圳赛安特技术服务有限公司 实时预览网页编辑内容的方法、装置、设备及存储介质
WO2022017458A1 (zh) * 2020-07-23 2022-01-27 北京字节跳动网络技术有限公司 同步数据方法、装置、电子设备和介质
CN114079658A (zh) * 2020-08-03 2022-02-22 荣耀终端有限公司 跨设备同步方法、终端设备及存储介质
CN114079658B (zh) * 2020-08-03 2022-10-28 荣耀终端有限公司 跨设备同步方法、终端设备及存储介质
WO2022083477A1 (zh) * 2020-10-22 2022-04-28 华为技术有限公司 一种mvvm架构的应用的开发方法及终端
CN113805910A (zh) * 2020-11-26 2021-12-17 北京沃东天骏信息技术有限公司 一种应用中的数据共享的方法及系统
CN113805910B (zh) * 2020-11-26 2024-05-17 北京沃东天骏信息技术有限公司 一种应用中的数据共享的方法及系统
CN112835762A (zh) * 2021-01-29 2021-05-25 北京奇艺世纪科技有限公司 数据处理方法和装置、存储介质和电子设备
CN112835762B (zh) * 2021-01-29 2023-09-01 北京奇艺世纪科技有限公司 数据处理方法和装置、存储介质和电子设备
CN114443992A (zh) * 2021-12-13 2022-05-06 北京国电通网络技术有限公司 数据可视化展示方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN108845856B (zh) 2021-12-14

Similar Documents

Publication Publication Date Title
CN108845856A (zh) 数据绑定方法、装置、存储介质及设备
CN108536463A (zh) 获取资源包的方法、装置、设备及计算机可读存储介质
CN107885533A (zh) 管理组件代码的方法及装置
CN108710496A (zh) 应用程序的配置更新方法、装置、设备及存储介质
CN110502308A (zh) 页面样式切换方法、装置、计算机设备及存储介质
CN108959361B (zh) 表单管理的方法和装置
CN108388628A (zh) 网页音频播放的方法及装置
CN107888968A (zh) 直播视频的播放方法、装置及计算机存储介质
CN103631580B (zh) 一种生成主题图标的方法和装置
CN108762881A (zh) 界面绘制方法、装置、终端及存储介质
CN108717432A (zh) 资源查询方法及装置
CN110515688A (zh) 页面显示方法、装置、终端及存储介质
CN111949680A (zh) 数据处理方法、装置、计算机设备及存储介质
CN110032384A (zh) 资源更新的方法、装置、设备及存储介质
CN109017373A (zh) 电动汽车的充电方法、装置及存储介质
CN109783504A (zh) 数据同步方法、装置、计算机设备及存储介质
CN110109770A (zh) 调试方法、装置、电子设备及介质
CN110045958A (zh) 纹理数据生成方法、装置、存储介质及设备
CN109600301A (zh) 消息处理方法及装置
CN109783176A (zh) 切换页面的方法和装置
CN109308265A (zh) 生成反向测试用例的方法和装置
CN108492339A (zh) 获取资源压缩包的方法、装置、电子设备及存储介质
CN111265885B (zh) 资源显示方法、资源发送方法、装置、设备及存储介质
CN107943484A (zh) 执行业务功能的方法和装置
CN108132817A (zh) 对象管理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant