Javascript 从ui bootsrap重写函数
我已经在使用bower的应用程序中包含了angular bootstrap库 我目前正在使用一个(旧的)版本,其中包含一个bug,这个bug在新版本中得到了解决。但是,在我的情况下,尚不可能升级 我还想在我的Javascript 从ui bootsrap重写函数,javascript,angularjs,Javascript,Angularjs,我已经在使用bower的应用程序中包含了angular bootstrap库 我目前正在使用一个(旧的)版本,其中包含一个bug,这个bug在新版本中得到了解决。但是,在我的情况下,尚不可能升级 我还想在我的index.html页面的导入行下方添加一个定制的修改过的js文件,但是编译错误发生了 我确切地知道库ui bootstrap.js的.js中包含bug的正确位置,但这些更改在该文件中并不合适,因为我在自动构建系统中开发的这些更改只会覆盖我的更改 因此,我想在调用有缺陷函数的地方(页面的控制
index.html
页面的导入行下方添加一个定制的修改过的js文件,但是编译错误发生了
我确切地知道库ui bootstrap.js
的.js中包含bug的正确位置,但这些更改在该文件中并不合适,因为我在自动构建系统中开发的这些更改只会覆盖我的更改
因此,我想在调用有缺陷函数的地方(页面的控制器或服务)覆盖函数
这可能吗?如果是这样,如何最好地覆盖它?您可以为要更改的方法创建一个装饰器 假设您的工厂如下所示
app.factory('myService',function(){
return {
getData: function() {
// your code
}
};
});
app.config(function($provide) {
$provide.decorator('myService', function($delegate) {
var oldFunc = $delegate.getData;
$delegate.getData = function() {
// your updated code
return oldFunc();
};
return $delegate;
});
});
现在,如果您想更改getData()函数的功能,可以按如下方式进行
app.factory('myService',function(){
return {
getData: function() {
// your code
}
};
});
app.config(function($provide) {
$provide.decorator('myService', function($delegate) {
var oldFunc = $delegate.getData;
$delegate.getData = function() {
// your updated code
return oldFunc();
};
return $delegate;
});
});
您可以为要更改的方法创建装饰器 假设您的工厂如下所示
app.factory('myService',function(){
return {
getData: function() {
// your code
}
};
});
app.config(function($provide) {
$provide.decorator('myService', function($delegate) {
var oldFunc = $delegate.getData;
$delegate.getData = function() {
// your updated code
return oldFunc();
};
return $delegate;
});
});
现在,如果您想更改getData()函数的功能,可以按如下方式进行
app.factory('myService',function(){
return {
getData: function() {
// your code
}
};
});
app.config(function($provide) {
$provide.decorator('myService', function($delegate) {
var oldFunc = $delegate.getData;
$delegate.getData = function() {
// your updated code
return oldFunc();
};
return $delegate;
});
});
在github上分叉
angular引导
,进行所需的更改,并在bower.json
中使用git url,如:
{
"dependencies": {
"angular-bootstrap": "git@github.com:yourgithubuser/angular-bootstrap.git"
}
}
在github上分叉
angular引导
,进行所需的更改,并在bower.json
中使用git url,如:
{
"dependencies": {
"angular-bootstrap": "git@github.com:yourgithubuser/angular-bootstrap.git"
}
}
在这种情况下,破解自动化构建比破解代码要好way@Ahmad非常同意你的意见。这将在几周后发生,只是升级需要一个新版本的bootstrap,它需要一个新版本的angular,这迫使我改变了几乎整个网站。尽管这项工作计划在几周内完成,但目前我需要拿出一个“快速”解决方案。你会遇到什么样的编译错误?你为什么得到这个?你如何编译你的代码?通常覆盖它不是最好的方法。最快的方法是将有缺陷的指令复制到该指令的重命名自定义版本中,修复该缺陷并使其可供正常使用。唯一的问题是,您将代码绑定到库的特定版本,这意味着未来更改的灵活性较差。在这种情况下,黑客攻击您的自动化构建比黑客攻击您的代码要好way@Ahmad非常同意你的意见。这将在几周后发生,只是升级需要一个新版本的bootstrap,它需要一个新版本的angular,这迫使我改变了几乎整个网站。尽管这项工作计划在几周内完成,但目前我需要拿出一个“快速”解决方案。你会遇到什么样的编译错误?你为什么得到这个?你如何编译你的代码?通常覆盖它不是最好的方法。最快的方法是将有缺陷的指令复制到该指令的重命名自定义版本中,修复该缺陷并使其可供正常使用。唯一的问题是,您将代码绑定到库的特定版本,这意味着未来更改的灵活性很差。这个想法很好,但代码片段会比屏幕截图好得多。这个想法很好,但代码片段会比屏幕截图好得多。