我可以将控制器注入到这个 Formly 选择框对象中吗?
Can I inject a controller into this Formly selectbox object?
我正在使用Angular Formly库来生成表单。此库允许您使用 JSON 对象构建表单。我正在处理一个动态的父子下拉列表:
http://jsbin.com/fiqubibawi/edit?js,output
vm.formFields
数组包含多个描述应如何构建输入字段的对象。这些对象中的每一个都包含一个controller
对象。这正是它听起来的样子:一个 Angular 控制器。下面是一个示例对象:
{
key: 'sport',
type: 'select',
templateOptions: {
label: 'Sport',
options: [],
valueProp: 'id',
labelProp: 'name',
},
controller: /* @ngInject */ function($scope, DataService) {
$scope.to.loading = DataService.sports().then(function(response){
$scope.to.options = response;
return response;
});
}
}
我的问题:我在服务器端(ASP.NET)生成这些对象,并使用 JSON 将它们发送到浏览器。这意味着我无法向此对象添加控制器功能。我宁愿拥有的:
{
key: 'sport',
type: 'select',
templateOptions: {
label: 'Sport',
options: [],
valueProp: 'id',
labelProp: 'name',
},
controller: ['MyCoolController']
}
}
在 Angular 或其他一些肮脏的 JavaScript hack 中有什么方法可以让这段代码工作吗?它必须是一个字符串,因为 JSON 规范不允许通过网络发送函数。
幸运的是,
您可以使用Angular的依赖注入。
只需声明一个新的控制器
app.controller('TestController', function($scope, DataService) {
$scope.to.loading = DataService.sports().then(function(response){
$scope.to.options = response;
return response;
});
});
然后您可以使用名称'TestController'
进行注入(我已经更新了您的 jsbin 以反映这一点)
vm.formFields = [{
key: 'sport',
type: 'select',
templateOptions: {
label: 'Sport',
options: [],
valueProp: 'id',
labelProp: 'name',
},
controller: 'TestController'
},
...
];
相关文章:
- jQuery-检测选择对象是否添加或删除了选项
- 如何通过Fabric.js只点击实际内容来选择对象
- j查询选择器不选择对象
- 在选择对象中使用多个 add() 命令
- 如何使用 jQuery 克隆选择对象
- 用Javascript创建一个动态选择对象
- IndexedBD从上到下选择对象
- 当您已经选择对象时,如何在jQuery中获取直属子项
- 如何打开窗口并在该窗口中选择对象
- Fabricjs-Can'不要在fabric.util.enlivenObjects之后选择对象
- 从管线中选择“对象”“角度参数”
- 在选择对象中输入文本
- 选择对象值
- 从 javascript 对象数组中选择对象的子集
- 如何将大量项目添加到 HTML 选择对象
- 根据选项值匹配选择对象变量
- 在更改函数后使用 jQuery 选择对象,修改了需要选择的元素的 html 结构
- 使用变量中的数字动态选择对象
- 随机选择对象
- 正交摄影机和使用光线投射选择对象