【问题标题】:What is the role for a controller and what is the role for $scope in AngularJS?控制器的作用是什么,$scope 在 AngularJS 中的作用是什么?
【发布时间】:2013-06-30 20:09:54
【问题描述】:

我是 AngularJS 菜鸟,但非常熟悉以前的 MVC/MVVM 框架。我来自 OO 背景,但投入了大量时间来学习 Javascript 的准功能特性。假设我理解闭包但从未有意义地使用它们。

我试图弄清控制器概念和 AngularJS 中的 $scope 概念之间的区别。

下面我在使用 '$scope' 对象时要小心,而不是在 AngularJS 中引用'scope' 的概念。

在 AngularJS 概念概述 (http://docs.angularjs.org/guide/concepts) 中,控制器被描述为使用范围作为视图和控制器之间的粘合剂。范围看起来像一个模型容器。

这是有道理的。

没有意义的是我见过的所有将函数添加到 $scope 对象的示例。 $scope 对象是控制器的主体吗?如果是这样,是不是这个对象命名不当,因为它与“范围”概念混淆了?

-喜欢-AngularJS-但-困惑

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    $scope 是视图和控制器都知道的对象...

    它实际上不是控制器本身,但通过它你可以传入对数据和方法的引用,并在视图中使用它们。

    Angular 中的控制器更像是一个演示模型,它包含一个对象,该对象是视图和控制器的“共同朋友”……至少我是这么想的 :)

    【讨论】:

    • 谢谢!那么视图特有的业务逻辑是在控制器中还是在 $scope 中?这些是一回事吗?我看到人们向 $scope 添加方法。
    • 当你想向视图公开一些东西时,你将它附加到 $scope,其他的数据转换方法你可以放在控制器的内部,但通常它会在所有的 $scope 上找到它自己计算或转换:)
    • 再次感谢!所以说从服务器对 JSON 对象的操作将在控制器中,但更改 div 背景的代码将在 $scope 中?
    • 不完全是,你应该只在 $scope 上表达数据,并从视图中调用 $scope 方法(一种方式),像 jQuery 操作这样的代码应该在指令内部,并且通常更改为 Json,如果它们对您来说是本地的,控制器可能在那里,但如果它们是全局需要的,它们应该在可注入服务中
    • 啊非常好。我懂了。好的。所以控制器实际上只适用于非常面向视图的代码。对于我来说,它们并不是应用程序行为或操作的整体控制器。我将把这个问题标记为已回答(并问另一个特定的问题!)。非常感谢 ShaiRez!
    猜你喜欢
    • 2014-01-19
    • 2014-08-13
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多