我尝试了解angularjs.org上的示例。例如,以下代码段。这个.value
和.factory
以及.config
如何运作?
angular.module('project', ['ngRoute', 'firebase'])
.value('fbURL', 'https://angularjs-projects.firebaseio.com/')
.factory('Projects', function($firebase, fbURL) {
return $firebase(new Firebase(fbURL)).$asArray();
})
.config(function($routeProvider) {
...
修改
我不理解上面代码的观点是第一行之后的空白行和以点开头的行。
答案 0 :(得分:5)
作为标准dictates,除非有reason for ASI(例如使用后缀操作,return
,continue
,throw
或break
语句,JS分隔语言标记的行终止符被视为任何其他空格 - 即被忽略。所以这些线......
angular.module(arg1, arg2)
.value(arg3)
.controller(arg4)
.filter(arg5)
...的处理方式与......基本相同。
angular.module(arg1, arg2).value(arg3).controller(arg4).filter(arg5)
所以关于可读性。
答案 1 :(得分:3)
javascript中的函数可以返回一个可以调用函数的对象。基本上你可以链接函数调用。这与jQuery相同,例如jQuery。让我们假设您有一个具有以下方法的对象:
setFirstValue()
setSecondValue()
如果从这些方法中返回相同的对象(例如):
function setFirstValue() { do something here; return this; }
您现在可以将这些方法链接在一起:
object.setFirstValue().setSecondValue()
所以..正如你所看到的那样......这个点实际上是对前一个操作的结果进行操作 - 它就像那个一样简单。
答案 2 :(得分:2)
这与:
相同var app = angular.module('project', ['ngRoute', 'firebase'])
app.value('fbURL', 'https://angularjs-projects.firebaseio.com/')
app.factory('Projects', function($firebase, fbURL) {
return $firebase(new Firebase(fbURL)).$asArray();
})
app.config(function($routeProvider) {
...
angular.module调用返回一个对象,点符号引用返回的前一个对象。
希望这有助于您了解对象的引用如何按照您设置的方式工作。
答案 3 :(得分:1)
要回答您更新的问题:
Javascript忽略换行符和间距。它只是将其读作.module()。value()。factory.config(),但它以人类可读的方式进行格式化。
答案 4 :(得分:0)
.
对前面的表达式的结果进行操作。例如,angular.module('project', ['ngRoute', 'firebase'])
返回一个模块对象,您可以在其上调用.value
。