gpt4 book ai didi

javascript - 我可以将 Controller 注入(inject)到这个 Formly 选择框对象中吗?

转载 作者:行者123 更新时间:2023-11-29 14:42:36 25 4
gpt4 key购买 nike

我正在使用 Angular Formly 库来生成表单。该库允许您使用 JSON 对象构建表单。我正在研究一个动态的父子下拉列表:

http://jsbin.com/fiqubibawi/edit?js,output

vm.formFields 数组包含几个描述输入字段应该如何构建的对象。这些对象中的每一个都包含一个 controller 对象。这正是它听起来的样子:一个 Angular Controller 。这是一个示例对象:

{
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 将它们发送到浏览器。这意味着我无法将 Controller 功能添加到该对象。我想要的是:

{
key: 'sport',
type: 'select',
templateOptions: {
label: 'Sport',
options: [],
valueProp: 'id',
labelProp: 'name',
},
controller: ['MyCoolController']
}
}

在 Angular 中有没有什么方法,或者其他一些肮脏的 JavaScript hack,让这段代码工作?它是一个字符串,因为 JSON 规范不允许通过网络发送函数。

最佳答案

幸运的是,您可以使用 Angular 的依赖注入(inject)。

只需声明一个新的 Controller

app.controller('TestController', function($scope, DataService) {
$scope.to.loading = DataService.sports().then(function(response){
$scope.to.options = response;
return response;
});
});

然后您可以使用名称 'TestController' 进行注入(inject)(我已经更新了您的 jsbin 以反射(reflect)这一点)

vm.formFields = [{
key: 'sport',
type: 'select',
templateOptions: {
label: 'Sport',
options: [],
valueProp: 'id',
labelProp: 'name',
},
controller: 'TestController'
},
...
];

关于javascript - 我可以将 Controller 注入(inject)到这个 Formly 选择框对象中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36766822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com