我已经开始玩AngularJS了,我很难理解指令和范围。
如果我理解正确,你创建指令来创建可重用的组件,其中包含修改DOM的行为和逻辑吗?
指令是否将服务注入其中?
或者您是否使用带有注入服务的指令的控制器?
我想我真的在努力解决指令与控制器和服务以及范围之间的关系。
是否有任何好的教程可以用一种易于掌握的方式解释这一点?
答案 0 :(得分:4)
您可以将服务注入指令或控制器。帮助我的一件事是听到唯一的地方DOM操作应该发生在指令。
控制器应该是视图和服务之间的粘合剂,并且基本上处理视图行为。它们应该很薄
服务管理独立于视图的逻辑(并且是单例)。
所以想想更多的声明,更少的迭代。 总体而言,代表模型中的状态。然后设置绑定,以便您可以更改模型并自动更改视图(来自:http://www.youtube.com/watch?v=oJoAnVRIVQo)
您可以查看Angular团队的YouTube频道:http://www.youtube.com/user/angularjs
这里有一些很好的教程:http://egghead.io
答案 1 :(得分:1)
服务旨在在整个应用中保持状态。 - 大多数时候它们将存在于您的控制器中 - 它们可以注入你的指令
控制器旨在使用从视图传入的值执行业务/应用程序逻辑。
指令对以下内容非常有用: - 创建可重用的组件 - 向DOM或Forms添加行为 http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController
范围是指令或控制器可以访问的应用程序中的上下文。 - 使用控制器,范围仅限于DOM 分配给它的元素及其子元素。 - 使用指令,范围可以与控制器范围相同 或者是它自己的范围(与所有其他范围隔离),或者它自己的范围 原型继承自其父范围。
上的视频答案 2 :(得分:1)
试图理解AngularJS的概念
请阅读Josh David Miller撰写的 THIS 回复。
我认为对于谁知道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文件中)并轻松导入其他项目。