-克隆项目骨架
$ git clone --depth=1 https://github.com/zce/angular-boilerplate.git moviecat
$ cd moviecat
- 安装项目依赖
$ bower install bootstrap --save
.editorconfig -- 统一不同开发者的不同开发工具的不同开发配置
在Sublime中使用需要安装一個EditorConfig的插件
- 為NG做一个项目骨架的目的是为了快速开始一个新的项目 -angular-seed
npm 在package.json 中的script节点中可以定义脚本任务,
API的概念: 应用程序编程接口
-跨域问题 支持跨域的对象
<iframe src="http://www.baidu.com"></iframe> <script src="http://www.baidu.com"></script>function callback (data){
console.log(data);
}
需要是全局 让其他的调用
window。angular = {};
angular.callback = {};
angular.callback._0 = function(){
}
jquery的方法
function jquery_isonp11292345(arguments){
}
-在angular中使用JSONP的方法做跨域请求,就必须给当前地址加一个参数callback=JSON_CALLBACk, 最后JSON_CALLBACk会替换成一个随机的数
$http.jsonp(address+'?callback=JSON_CALLBACK');
但是这里 豆瓣API不能用
-数组元素的字符串化
arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString() 、toString() 、valueOf():可以看作是join的特殊用法,也可以实现相同效果
-手写jsonp
(function(window,document,undefined){
'use strict';
var jsonp = function(url,data,callback){
//1.挂载回调函数
var fnSuffix = Math.random().toString().replace('.','');
var cbFuncName = 'my_json_cb_' + fnSuffix;
window[cbFuncName] = callback;
//2.将data转换为url字符串的形式 {id:1,name:'zhangshan'} => id=1&name=zhangshan
var querystring = url.indexOf('?') == -1 ? '?':'';//判断url中是否有?
for(var key in data){
querystring += key + '=' + data[key] + '&'; //querystring=?id=1&name=zhangshan&
};
//3.处理url中的回调参数
//url += callback=sdsfdsg
querystring += 'callback=' + cbFuncName;
//querystring=?id=1&name=zhangshan&cb=my_json_cb_02132817213
//4.创建一个script标签
var scriptElement = document.createElement('script');
scriptElement.src = url + querystring;
//注意此时还不能将其安排碰上到页面上
//5.将script标签放在页面中
document.body.appendChild(scriptElement);
//append过后页面会自动对地址发送请求,请求完成以后自动执行
};
window.$jsonp = jsonp;
})(window,document);
-$apply(); 由于加载出的内容没有渲染到页面上,所有用$apply()重新渲染一下页面