init()和window.int()有什么区别
What is the difference between init() and window.init()?
我已经通读了下面的食谱,它展示了一种通过谷歌云端点后端为AngularJS前端供电的方法:
https://cloud.google.com/resources/articles/angularjs-cloud-endpoints-recipe-for-building-modern-web-applications
我不明白的是关于AngularJS和Cloud端点初始化的附录。相关章节如下:
附录:AngularJS+云端点初始化提示#1:注意初始化顺序
留言簿应用程序加载以下三个不同的JS库序列:
- AngularJS
- 留言簿应用程序
- Google API客户端,包含端点功能
为了遵循这个顺序,index.html包含以下内容
<head>
标签中的<script>
标签用于加载每个JS库:<script src="js/angular.min.js"></script> <script src="js/guestbook.js"></script> <script src="https://apis.google.com/js/client.js?onload=init"></script>
加载后,第三个库(Google API客户端)调用由其"onload"参数指定的初始化函数。在这个在这种情况下,需要并调用init()函数。技巧2:输入AngularJS世界尽可能快的
在初始化序列中,我们使用两个函数:
init() function window.init() function
这个init()函数在guestbook.js中定义如下:
function init() { window.init(); }
正如上面的代码所示,该函数只调用window.init()函数(即在全局窗口对象中定义的init()函数)什么也不做。window.int()是在AngularJS中定义的控制器如下:
$window.init= function() { $scope.$apply($scope.load_guestbook_lib); };
在AngularJS中,全局窗口对象由"$window"访问符号,它是它的包装器。这是AngularJS中的最佳实践不直接访问窗口对象以提高可测试性。
不希望在中执行初始化的原因第一个init()方法可以尽可能多地放入代码在AngularJS世界中,例如控制器、服务和指令。因此,您可以充分利用AngularJS的力量您的单元测试、集成测试等等。
似乎在一个外部javascript文件中定义了一个全局函数init()
。这个init()
函数只调用window.init()
(并且应该在加载后由Google客户端库调用)。但是window.int()不就是全局定义的init()
函数吗?那么,在window.init()
(以及init()
)被重新定义之前,我们不会在这里得到一个循环吗?
此示例尝试获取google-api-init事件并将其转移到AngularJS范围。
当
<script src="https://apis.google.com/js/client.js?onload=init"></script>
加载后,它调用全局定义的init函数,该函数又调用在窗口对象上定义的init方法。由于该功能可以访问角度范围,因此它与角度配合良好
它使云端点调用更容易封装在promise 中
以下是如何让它变得更容易http://anandsekar.github.io/initialize-google-appengine-and-angularjs/
guestbook.js定义了一个init函数,该函数在您的描述中显示为全局函数。该init函数被传递给google client.js。该全局init函数只调用window.init中的(另一个)全局函数。首先加载的angular模块应该通过angular提供的$window设置window.init。没有循环,client.js调用guestbook.js的init,该init调用角度方法$window.init,与window.init相同。
- 全局变量和全局对象的属性之间有什么区别吗
- 在ember/handlers中使用value和valueBinding有什么区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- webpack开发模式和生产构建模式之间有什么区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 以下两者在javascript中有什么区别
- jquery.js和jquery.lite.js有什么区别
- 通过Nuget安装Angular JS和Angular JS核心有什么区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- jQuery中这两个词有什么区别
- 在Javascript语法中:和::和:::有什么区别
- getElementById 和 getElementsByClassName 有什么区别?
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别
- 在使用JS的Ajax调用中,ajaxComplete和beforesend之间有什么区别
- $(e.target).find和template.find('input').value之间有什么区别
- 在javascript中,在变量名之前使用var有什么区别/优势吗