最近在项目中遇到的问题,jedate时间选择插件引入angular项目中会有找不到id的错误。。
观察jedatejs代码发现它是在页面打开时候就已经加载了,所以用controller时候再去调用就会找不到id
;(function(window, factory) {
//amd
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') { //umd
module.exports = factory();
} else {
window.jeDate = factory();
}
})(this, function() {
var doc = document, win = window;
var jet = {}, doc = document, regymdzz = "YYYY|MM|DD|hh|mm|ss|zz", gr = /\-/g,
regymd = "YYYY|MM|DD|hh|mm|ss|zz".replace("|zz",""), parseInt = function (n) { return window.parseInt(n, 10);};
var $Q = function (selector,content) {
content = content || document;
return selector.nodeType ? selector : content.querySelector(selector);
};
var jeDate = function(elem,options){
var opts = typeof (options) === "function" ? options() : options;
return new jeDatePick(elem,opts);
};
它的解决办法就是在controller里面延迟加载下:
app.controller('js.controllers.modules.alarm.alarmSetController',
['$rootScope','$scope', '$modal', '$log', function($rootScope,$scope, $modal, $log) {
// angular.element().ready(){
// alert('dd');
// };
$scope.$watch('$viewContentLoaded', function() {
var jds = jeDate("#test05",{
format: "hh:mm:ss"
});
});
}]) ;
so,用到的是
$viewContentLoaded
开始用的是$(document).ready()
,但是它在我的angular里面是无效的,原因到现在还不知道。。
附两种写法:
$scope.$on('$viewContentLoaded', function(){
});
// 或者
$scope.$watch('$viewContentLoaded', function() {
});
看到另一个博客里写的方法还有data-ng-init:
<div ng-controller="test">
<div data-ng-init="load()" ></div>
</div>
- 1
- 2
- 3
bookControllers.controller('testInit', ['$scope', '$routeParams', function($scope, $routeParams) {
$scope.load = function() {
alert('code here');
}
}]);
我的第一篇博客嘻嘻
![大笑](https://static-blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)