1

我已经开始使用 AngularJS,但我很难理解指令和范围。

如果我理解正确,您创建指令来创建包含修改 DOM 的行为和逻辑的可重用组件?

那么指令是否将服务注入其中?

或者您是否使用带有注入服务的指令的控制器?

我想我真的在指令与控制器和服务以及范围之间的关系上苦苦挣扎。

是否有任何好的教程以易于掌握的方式解释这一点?

4

3 回答 3

4

您可以将服务注入指令或控制器。帮助我的一件事是听说DOM 操作应该发生的唯一位置是在指令中。

控制器应该是视图和服务之间的粘合剂,并且基本上处理视图行为。他们应该很瘦

服务管理独立于视图的逻辑(并且是单例)。

因此,请多考虑声明性,少一些迭代。 总体而言,在模型中表示状态。然后设置绑定,以便您可以更改模型并自动更改视图 (来自:http ://www.youtube.com/watch?v=oJoAnVRIVQo )

您可以查看 Angular 团队的 youtube 频道: http ://www.youtube.com/user/angularjs

这里有一些很好的教程:http ://egghead.io

于 2013-10-12T17:47:09.283 回答
1

服务旨在在整个应用程序中保持状态。- 大多数时候它们将存在于你的控制器中 - 它们可以被注入到你的指令中

控制器旨在使用从视图传入的值执行业务/应用程序逻辑。

指令可用于: - 创建可重用组件 - 向 DOM 或表单添加行为 http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

范围是指令或控制器可以访问的应用程序中的上下文。- 对于控制器,范围仅限于分配给它的 DOM 元素及其子元素。- 使用指令,作用域可以是与控制器的作用域相同的作用域,也可以是它自己的作用域(与所有其他作用域隔离),或者它自己的作用域原型继承自其父作用域。

我推荐http://egghead.io上的视频

于 2013-10-12T18:33:06.793 回答
1

试图理解AngularJS的概念

请阅读Josh David Miller 撰写的此回复。

我认为这对于了解 jQuery 但仍是 AngularJS 初学者的人来说将是一个好的开始。

如果我理解正确,您创建指令来创建包含修改 DOM 的行为和逻辑的可重用组件?

指令是 AngularJS 中最困难的部分(至少对我来说)。当然,您可以对指令进行服务注入,例如:

app.directive('changeMe', ['$compile', 'myService', function($compile, myService){
    return {
        restrict: 'CA',
        link: function (scope, element, attrs) {
            scope.value = myService.value;
        }
    }
 }]);

服务

服务的主要好处是它提供了代码重用的正式机制。任何共享的业务逻辑都可以转移到服务中,通过避免代码重复来提高代码的可维护性。实用程序之类的服务,您可以获取它们(所有服务应编写在单独的 JS 文件中)并轻松导入其他项目。

于 2013-10-12T18:53:26.327 回答