扩展UI选择控制器(angular)
Extend UI select controller (angular)
我试图扩展ui-select(版本0.17.1),使其刷新点击。这里有一个例子(https://jsfiddle.net/betonetotbo/0yfhe7pf/),我一直使用它作为起点。
我希望这发生在应用程序范围内,所以我用我自己的,其中包括一个div按钮替换了ui-select-choices指令html。我还添加了一个装饰器,将指令的控制器替换为一个尚未定义的新控制器。
myapp.app.config(function(provide) {
$provide.decorator("uiSelectDirective", [ "$delegate", "uiSelectConfig", "$controller"], function ($delegate, uiSelectConfig, $controller) {
var directive = $delegate[0];
// This line throws error Unknown provider
var $select = $controller('uiSelectCtrl');
return $delegate;
}]);
});
我的问题是我还想装饰/扩展控制器以在整个应用程序中添加额外的功能。我不想重写它的全部,所以我正在寻找适当的方式来扩展这样的控制器。
谢谢。
我已经通过重载指令的编译方法解决了这个问题:
$provide.decorator('uiSelectDirective', ['$delegate', function ($delegate) {
var directive = $delegate[0];
var compile = directive.compile;
directive.compile = function (tElement, tAttrs) {
var link = compile.apply(this, arguments);
return function (scope, element, attrs, ngModel) {
link.apply(this, arguments);
var ctrl = ngModel[0];
var activate = ctrl.activate;
//I had to close the dropdown when clicking on the directive
ctrl.activate = function (initSearchValue, avoidReset) {
if (!ctrl.disabled) {
if (ctrl.open) {
ctrl.close();
} else {
activate(initSearchValue, avoidReset);
}
}
}
};
};
return $delegate;
}]);
相关文章:
- angularjs:访问angular控制器中的jquery变量
- 允许在Angular控制器或视图中使用html标记
- 如何在 Angular 控制器中更改 Satellizer 的 $authProvider.loginUrl
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 尝试通过 Angular 控制器使用 Google Geocode API 进行地理编码,值未定义
- 如何将列表从C#angular传递到angular控制器
- 如何从html输入类型=“”中只获得Angular控制器变量中的时间值;时间”;
- Angular:控制器范围内的可重用功能
- $scope.form.$error在Angular控制器中未定义
- 如何在单元测试中注入Angular控制器
- 如何将变量从Angular控制器传递到html<脚本></脚本>
- Angular:控制器可以监视服务器属性吗
- 从 Angular 控制器访问不同模块中的角度服务
- 如何在 PopConconfirm 中单击按钮 yes 时调用在 Angular 控制器中声明的删除函数
- 在 Angular 控制器完成加载异步函数后加载 html 视图
- 如何使用 Angular 控制器将变量传递到另一个页面
- 这两个 Angular 控制器之间的功能有什么区别吗?
- Karma + Webpack Angular 控制器未找到
- 如何将范围中的变量注入到 Angular 控制器中
- 从 Angular 控制器调用引导模式