范围,视图,控制器和数据如何在Angular中进行交互?

时间:2014-06-17 04:34:35

标签: angularjs view model scope

我找不到一个简单的答案。所以,我希望这里的专家可以用Layman的术语来解释它。正如我们的好朋友阿尔伯特爱因斯坦所说的那样:“如果你无法向一个六岁的孩子解释它,你自己就不明白了。”

据我所知,我读到了......

Controller = Main Duty is to create $scope
View = Template + data
Model = data
Data = Database Data or API Data or User Input(View Data)

控制器构建一个名为$ scope的对象。它将属性和方法(函数)添加到$ scope对象。它可以调用函数getData()从数据库或API中获取数据,并定义和填充$ scope属性和方法。它还可以将函数附加到$ scope,可用于将DB同步到它创建的$ scope。

创建$ scope后,双向数据绑定的神奇之处就会受到影响。如果用户输入名称:在文本框中...它自动与$ scope同步。但是,这如何连接到数据库?数据库是否也会自动更新?

当我们谈论MODEL(数据)时...他们说它不是$ scope,但$ scope暴露了MODEL。 MODEL(数据)可以是DB或API或用户输入.... MODEL在哪里?它在哪里生活? DB或是MODEL,DB和API的组合。用户输入?

如果有人能够提供一份“六年之久的简单”总体图表或描述如何将所有这些结合在一起我会非常感激。

1 个答案:

答案 0 :(得分:1)

坚果壳:

  1. 查看 - > HTML - >通过指令渲染视图(教HTML新技巧)。直接与View Model和Controller交互。
  2. 服务 - >获取数据,持久数据,调用Web服务,与后端交互
  3. 查看模型 - >范围+范围方法+范围变量。对视图模型的更改会触发对视图的更改(通过$ watch处理程序)
  4. 控制器 - >与服务交互并更新视图模型
  5. HTML视图包含的指令只是类,元素,属性和注释。在编译和链接阶段,指令被呈现'意思是它们被转化,并通过绑定给出行为。

    控制器初始化视图模型(反过来初始化视图)。如果控制器来自指令,或者来自在HTML元素上声明的ng-controller,则这是真的。

    从控制器调用服务(从不直接从视图中调用),以检索和保留数据。服务可以被认为是模型(不要与视图模型混淆)。在控制器与模型交互之后,控制器然后通过更新范围变量来更新视图模型。

    更新范围变量时,它们会触发手表处理程序,然后更新View。

    希望有所帮助