只是一个简单的问题,是否可以在lightswitch的屏幕上显示静态图像?
我想点击“添加数据项” - >选择“本地属性”并键入“图像”。现在不像以前的版本我不能选择文件路径所以我需要通过后渲染部分写一些js,我在这里输入什么?
感谢您给予我任何帮助,尝试了一些方法但没有成功。
答案 0 :(得分:1)
最近解决了类似情况后,我们实施了以下帮助承诺操作功能: -
function GetImageProperty (operation) {
var image = new Image();
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
// XMLHttpRequest used to allow external cross-domain resources to be processed using the canvas.
// unlike crossOrigin = "Anonymous", XMLHttpRequest works in IE10 (important for LightSwitch)
// still requires the appropriate server-side ACAO header (see https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image)
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var url = URL.createObjectURL(this.response);
image.onload = function () {
URL.revokeObjectURL(url);
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, 0, 0);
var dataURL = canvas.toDataURL("image/png");
operation.complete(dataURL.substring(dataURL.indexOf(",") + 1));
};
image.src = url;
};
xhr.open('GET', this.imageSource, true);
xhr.responseType = 'blob';
xhr.send();
};
添加了本地属性(添加数据项 - >本地属性 - >类型:图像 - >名称:ImageProperty)并将其放入内容项树中,可以在以下方式内执行promise操作_postRender例程: -
msls.promiseOperation
(
$.proxy(
GetImageProperty,
{ imageSource: "content/images/user-splash-screen.png" }
)
).then(
function (result) {
contentItem.screen.ImageProperty = result;
}
);
或者,可以在屏幕创建的功能中按如下方式调用它: -
msls.promiseOperation
(
$.proxy(
GetImageProperty,
{ imageSource: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/pie.png" }
)
).then(
function (result) {
screen.ImageProperty = result;
}
);
上述调用还表明,除了在LightSwitch项目中显示本地图像之外,还可以将imageSource设置为外部URL(前提是外部站点使用适当的服务器端ACAO头以允许跨域访问)
编辑:我已更新此辅助功能,以便在回复此帖Adding static image to Lightswitch HTML 2013 Browse Screen时稍微改进一下。