项目开发问题记录

1、动态添加的按钮,点击动作没有反应 

      使用 jquery版本 为2.0。使用on()来添加点击动作 。但是没有反应 。 经查阅资料发现正规写法 为 : $(document).on("click",".one",function(){  ***  });使用 $(document)的意义是使元素加载完成 后在 执行方法 。另外jquery1.9版本以上不能使用live()了 ,使用on()来代替。

       延伸内容: 

  • die()被废弃,用off()替代。
  • toggle()在1.8以后不推荐使用。替换的方式是把两个函数合并成一个函数的if-else两个区段,然后自己设置一个boolean变量,控制每次点击时应该执行哪个区段即可。
  • prop设置的是某元素固有的属性,而attr设置的是写在html标签上的自定义属性。举个例子:

<input type="checkbox" checked="checked" haha="hello" >
var v1 = $('input').prop("checked"); //返回true/false,是否被选中,随状态改变而改变
var v2 = $('input').attr("checked"); //返回"checked",这是你设置在标签上的,不会变
var v3 = $('input').attr("haha"); //返回"hello",自定义属性
var v4 = $('input').prop("haha"); //返回undefined,根本没有这个固有属性

  • $.parseJSON传入空值 

JQMIGRATE: jQuery.parseJSON requires a valid JSON string

jQuery之所以改这个接口,是为了和浏览器自带的JSON.parse接口对齐,从jQuery 1.9开始生效。这个问题常见于AJAX接收服务端返回值的时候。服务端可能返回一个空字符串,这时候调用该接口会产生错误。必须向$.parseJSON传入合法的JSON字符串。修正方法如下:

var v1 = $.parseJSON(str); 替换为
var v1 = $.parseJSON( str ? str : "null" );
  •        hover()被废弃

’hover’以前可以看作是’mouseenter mouseleave’两个事件的别称。目前已经将该别称去掉了,所以代码中请用’mouseenter mouseleave’替换之。


2、angularjs ui-router 路由不刷新

首次点击刷新, 再次点击就 不刷新了 , 希望 能 实时刷新。

解决 : 在链接地址上加上: ui-sref-opts="{reload: true}"


3、angularjs表单验证和 浏览器 验证,提示信息 同时存在

解决: 加上 no-validation="false"


4、不同模块显示不同的title

controller.js 

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. angular.module('myApp', [ ] )</span>  
  2.   .run(['$location','$rootScope',function($location, $rootScope){  
  3.     $rootScope.$on('$stateChangeSuccess'function (event, toState, toParams, fromState, fromParams) {  
  4.       $rootScope.title = toState.title  
  5.     });  
  6.   }]);  


router.js

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $stateProvider  
  2.       .state('global.search', {  
  3.         title: ' 这里设置每个page的title',  
  4.         url: '/global/search?q&company&user&region&account_type&call_type&registered',  
  5.         views: {  
  6.           'main': {  
  7.             templateUrl: helper.getUrl('global.search'),  
  8.             controller: 'searchCtrl',  
  9.           }  
  10.         }  
  11.       })  

index.html 
[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <!doctype html>  
  2. <html lang="zh-cmn-Hans" ng-app="myApp">  
  3.   
  4. <head>  
  5.   <meta charset="UTF-8">  
  6.   <title ng-bind="title">这里是默认的标题啦</title>  
  7. </head>  
  8.   
  9. <body>  
  10.   <div ui-view></div>  
  11. </body>  
  12.   
  13. </html>  


通过ng-bind指令将  $rootScope下的title绑定到html页面中

在$stateProvide.state中设置一个属性用力传递title内容,这里设置的是title属性

在主页的angualr.module()下运行run()函数用来获取router传来的title属性,每当网页更改跳转就会触发$stateChangeSuccess事件

这里的$stateChangeSuccess事件不可以用$routechangesuccess事件替代,如果不用ui-router插件则可以,代码如下:


router.js

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. .config(function($stateProvider, $urlRouterProvider) {  
  2. $urlRouterProvider.otherwise('/home');  
  3. $stateProvider  
  4.     .state('home', {  
  5.         url: '/home',  
  6.         templateUrl : 'views/home.html',  
  7.         data : { pageTitle: 'Home' }  
  8.   
  9.     })  
  10.     .state('about', {  
  11.         url: '/about',  
  12.         templateUrl : 'views/about.html',  
  13.         data : { pageTitle: 'About' }  
  14.     })  
  15.      });  

controller.js

[javascript]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $rootScope.$on("$routeChangeSuccess"function(currentRoute, previousRoute){  
  2.     $rootScope.pageTitle = $route.current.data.pageTitle;  
  3.   });  


index.html

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <title ng-bind="<span style="font-family: Arial, Helvetica, sans-serif;">pageTitle</span>"></title>  

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值