在AJAX型的单页应用普及之前,类似Rails、PHP和JSP之类的平台都可以帮助我们创建用户界面(UI),它们会把HTML字符串和数据混合起来,然后再发送给用户并显示。
而jQuery之类的库则在客户端继承了这一模型,让我们遵守类似的风格,但是使用jQuery可以单独刷新DOM中的局部内容,而不是刷新整个页面。在jQuery中,我们会把HTML模板字符串和数据混合起来,然后把获得的结果插入DOM中我们所期望的位置,插入的方式是把结果设置给一个占位符元素的innerHtml属性。
以上机制都工作得相当不错,但是当你想要把最新的数据插入到UI中,或者根据用户输入来修改数据的时候,你就需要做很多极其繁琐的工作来保证数据的状态是正确的,并且UI和JavaScript属性要同时正确。
但是,如果我们不需要编写代码就能做到以上所有事情会怎么样?如果我们可以仅仅声明UI中的某个部分需要映射到某个JavaScript属性,然后让它们自己去同步会怎么样?这种编程风格叫做数据绑定。因为它可以和MVC很好地结合起来,所以我们把它引入到了Angular中。这样一来,当你编写视图和模型的时候,可以节省代码量。在UI中,把数据从一个值修改成另一个值的大部分工作会自动进行。
为了在实战中看到这一点,我们来修改第一个例子,让它变成动态的。目前的情况是,HelloController会给模型greeting.text赋一次值,之后再也不会修改它。为了让它变成动态的,我们来修改这个例子,增加一个文本输入框,它会把greeting.text的值修改成用户所输入的内容。下面是新的模板:
控制器HelloController保持原样不变。把这个例子加载到浏览器中,效果如图所示。
领取专属 10元无门槛券
私享最新 技术干货