在2sxc模块应用程序中,我想从函数或外部web api获取“String Drop Down Values”的值,而不是输入值列表。
默认情况下这是否可行,或者有人可以给我一些指导从哪里开始这样做?
(EDIT / ADD) 是Content Custom Input Type是唯一的方法,还是有一些更简单的方法?
答案 0 :(得分:1)
所以基本上你的代码在Angular中运行,它也加载了2sxc4ng。至少有3种方法可以解决您的问题。
使用$ http非常清楚 - 如果你看电线,你会发现moduleid已经包含在标题中了。
要访问iid或sxc对象,您需要将它们作为依赖项放在此行中
.controller("FieldTemplate-String-Nn-Int-Json-List", function($scope, $filter, $modal, appId, debugState, eavAdminDialogs, $http)
所以你需要
.controller("FieldTemplate-String-Nn-Int-Json-List", function($scope, $filter, $modal, appId, debugState, eavAdminDialogs, $http, iid, sxc)
应该这样做。
答案 1 :(得分:0)
创建自定义输入类型是目前唯一的方法。由于很多人都在寻找这样的东西,如果你赞助/贡献它会很棒:)
答案 2 :(得分:0)
我附上了几乎没有描述的示例应用程序。
此链接上已经描述了所有内容:http://2sxc.org/en/blog/post/configurable-custom-input-type-dynamic-data-content
我只是将此示例更改为使用字符串,主代码更改位于角度控制器中,我的代码如下所示:
var url;
var controlSettings = $scope.to.settings["string-nn-json-list"];
if (controlSettings) url = controlSettings.jsonUrl || null;
// if null set default apiUrl
if (url === null) url = "http://www.mocky.io/v2/57aae03e120000be10739d3b";
$http({
method: 'GET',
url: url,
headers: {
'TabId': undefined,
'Pragma' : undefined,
'RequestVerificationToken' : undefined,
'Cache-Control' : undefined,
'Debugging-Hint' : undefined,
'ContentBlockId' : undefined,
'ModuleId' : undefined,
}
}).then(function successCallback(response) {
$scope.json_list_data = response.data;
});
对于外部json api数据,我使用:在www.mocky.io上创建的http://www.mocky.io/v2/57aae03e120000be10739d3b,这是" string-nn-json-list"的默认jsonUrl。您可以在字段设置中更改此网址。
修改(1)强>
我在iid的帮助下尝试使用 moduleId 进入控制器,但没有运气..
(function() {
"use strict";
angular.module("nnStringFromIntJsonData", [])
.config(function(formlyConfigProvider, defaultFieldWrappers) {
})
.controller("FieldTemplate-String-Nn-Int-Json-List", function($scope, $filter, $modal, appId, debugState, eavAdminDialogs, $http) {
// What to change in this code
// that I can get iid (moduleId) in this part of code?
debugger;
})
.run(
function($templateCache) {
})
})();
我必须更改(添加)此代码才能访问iid?
修改(2)强>
一种方式但安全性丢失(我只用于读取不重要的数据)就是你删除Api控制器属性的方式:
[DnnModuleAuthorize]和[ValidateAntiForgeryToken]并仅留下[HttpGet]
当从自定义输入类型控制器调用时使用类似:
var url = "/DesktopModules/2sxc/API/app-api/{ControllerName}/{MethodName}";
$http.get(url).then(function successCallback(response) {
$scope.json_list_data = response.data;
});
我真的不知道自己在做什么......似乎我学到的东西越来越少了我知道:-(以及使用try / error系统编写部分可用的代码......