对于弹出层要使用独立地址比较复杂,比如说login是一个弹出层,但是又给它配了/login的地址,这种处理起来有些复杂
定义一个监听location改变的类,然后每次到了弹出层的地址就根据地址显示弹出层
services.service('LocationChanger', ['$location', '$route', '$rootScope', function ($location, $route, $rootScope) { this.rootScopeEvent=null; //阻止ngView的刷新,返回this是方便链式调用 this.skipReload = function () { var lastRoute = $route.current; var me=this; //这里绑定过后面会一直响应,关闭弹出层的时候要取消绑定,绑定的时候会返回取消绑定的函数 me.rootScopeEvent=$rootScope.$on('$locationChangeSuccess', function () { $route.current = lastRoute; //相应过后,立即取消绑定的事件 me.rootScopeEvent(); }); return me; }; this.cancelReload=function(){ //取消$rootScope.$on('$locationChangeSuccess'的绑定 if(typeof this.rootScopeEvent ==="function"){ this.rootScopeEvent(); } return this; }; this.withReplace = function (url, doesReplace) { if(doesReplace){ $location.path(url).replace(); } else { $location.path(url || '/'); } return this; }; }]); LocationChanger.skipReload().withReplace();
ng-view只能有一个,用其插件ui-rotuer可以实现多个view
https://github.com/ui-router/angular
由于其内部采用全监听模式,每次改动一个model会更新所有的model,当model达到一定数量后,性能上有些吃力,有一些优化的建议
https://blog.51cto.com/13934921/2163063
对animate支持不友好,没有完善的回调模式,animate的性能也不尽人意,有时候需要人为的逻辑控制
在resource中默认会去掉结尾的“/”,使用下面这句代码加上对结尾“/”的支持
$resourceProvider.defaults.stripTrailingSlashes = false;
$http.post 和 $resource action post的区别
$http.post 使用 $http.post(url, postData, [config]);
params是在config中设置,例如$http.post("#",{"a":1},{params:{}});
resource action post中是
Resource.action([parameters], postData, [success], [error])
这个parameters是显示申明的,但是是可选参数,也就是说如果url中没有参数,是可以不带这个参数的,在action的定义的时候都可以不指定params属性
但是如果有params,这里有两种方式使用,一种params中的数据在postData中没有,那么使用的时候就要显示的带parameters这个参数,如果是postData中有,那么可以不带,直接用postData中的,只是params的定义的时候需要将值通过@符号进行映射
xxxx: { method: "post", url: xxxx }
xxxx: { method: "post", url: xxxx, params: {formId: ""} } xxxx({formId:xxxxx}, formData).then(); //formData中没有formId这个参数
xxxx: { method: "post", url: xxxx, params: {formId: "@formId"} } xxxx(formData).then(); //formData有formId这个参数
select 对象 multiple的时候,使用track by会导致不能返现
$scope.tags = [{id:"xxx",title:"xxx"},{id:"ddd",title:"ddd"}]; $scope.selected = ["xxx"]; <select ng-options="item.item as item.title for item in tags track by item.id" name="multipleSelect" id="multipleSelect" ng-model="selected" multiple> </select>
这样是不会显示选中的,需要把track by去掉
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。