media-choice为媒体资源选择组件,基于KnockoutJs。支持图片、语音、视频、图文的选择以及预览,支持默认选择类型,支持是否禁用选择类型的更改。

使用示例:

<script id="media_idTemplate" type="text/html"><media-choice-button params="value: media_id"></media-choice-button></script><script id="newsTemplate" type="text/html"><media-choice-button params="value: media_id,mediaType:5,disabledChoice:true"></media-choice-button></script>

参数说明:

value:微信公众号媒体Id

mediaType:默认选择的媒体类型,其中(0:图片;1,语音;2,视频;5,图文)

disabledChoice:是否禁用选择

效果:

全部代码:

var instance = function (params, componentInfo) {var self = this;this.Name = ko.observable('请选择素材');this.Url = ko.observable('/Content/patterns/congruent_pentagon.png');this.Id = ko.observable('');//默认选择的类型this.MediaType = ko.observable('1');//是否禁用选择框this.DisabledChoice = ko.observable(false);//订阅 self.MediaType.subscribe(function (newValue) {console.debug(newValue);self.Name('请选择素材');self.Url('/Content/patterns/congruent_pentagon.png');self.Id('');});this.ShowChoiceWindow = function (data) {var type = self.MediaType();var url = '';switch (type) {//图文case "5":url = '/Site_News?resourceType=5&lightLayout=1';break;//图片case "0":url = '/Site_Resources?resourceType=0&lightLayout=1';break;//语音case "1":url = '/Site_Resources?resourceType=1&lightLayout=1';break;//视频case "2":url = '/Site_Resources?resourceType=2&lightLayout=1';break;}mwc.window.show('选择素材', url);}if (params && typeof (params.value()) == 'string') {params.value.subscribe(function (newValue) {self.Id(newValue);});if (params.value().length > 0) {self.Id(params.value());mwc.restApi.get({//请求地址url: '/Site_Resources/GetJsonDataByMediaId/' + self.Id(),//是否锁定UIisBlockUI: true,//可选,锁定元素
                blockUI: componentInfo.element,//成功函数success: function (model) {console.debug(model);var data = model.FileBase;if (data == null) {return;}self.MediaType(model.ResourceType);//一定要放后面,不然因为触发了订阅事件而导致相关数据被清空
                    self.Name(data.Name);if (data.FrontCoverImageUrl)self.Url(data.FrontCoverImageUrl);elseself.Url(data.Url == null ? data.SiteUrl : data.Url);self.Id(data.MediaId);console.debug(ko.toJS(self));}});}if (params.mediaType) {self.MediaType(params.mediaType);}if (params.disabledChoice) {self.DisabledChoice(params.disabledChoice);}}window.choice = function (data) {params.value(data.MediaId);self.Id(data.MediaId);self.Name(data.Name);if (data.FrontCoverImageUrl) {self.Url(data.FrontCoverImageUrl);} elseself.Url(data.Url == null ? data.SiteUrl : data.Url);}
};
var newschoiceViewModelInstance = {createViewModel: function (params, componentInfo) {return new instance(params, componentInfo);}
};
//资源选择
ko.components.register('media-choice-button', {viewModel: newschoiceViewModelInstance,template: '' +'<div class="form-group">' +'<label class="col-sm-2 control-label">类型:</label>' +'<div class="col-sm-10">' +'<select class="form-control" data-bind="value:MediaType,disable:DisabledChoice" data-val="true" data-val-required="类型 字段是必需的。">' +'<option value="0">图片</option>' +'<option value="1">语音</option>' +'<option value="2">视频</option>' +'<option value="5">图文</option>' +'</select>' +'</div>' +'</div>' +'<div class="form-group">' +'<div class="col-sm-12">' +'<div>' +'<div class="panel panel-default" data-bind="click:ShowChoiceWindow">' +'<div class="panel-body" id="content">' +'<p data-bind="if:MediaType()==0">' +'<img style="width:150px;height:100px" data-bind="attr:{src:Url}" />' +'</p>' +'<p data-bind="if:MediaType()==1 && Id()!=\'\'">' +'<audio style="width:250px;height:100px" controls="controls" data-bind="attr:{src:Url}" />' +'</p>' +'<p data-bind="if:MediaType()==2 && Id()!=\'\'">' +'<video style="height:100px !important;width:250px !important" controls="controls" data-bind="attr:{src:Url}" />' +'</p>' +'<p data-bind="if:MediaType()==5">' +'<img style="width:150px;height:100px" data-bind="attr:{src:Url}" />' +'</p>' +'<div>' +'<p data-bind="text:Name">' + '</p>' +'</div>' +'<!-- ko if:Id()==\"\" && "1,2".indexOf(MediaType())!=-1 -->' +'<p>' +'<a class="btn btn-primary btn-block m-t" data-bind="click:$root.ShowChoiceWindow">'+ '<i class="fa fa-plus">' + '</i>选择素材</a>' +'</p>' +'<!-- /ko -->' +'</div>' +'</div>' +'</div>' +'</div>' +'</div>'
});

Magicodes.WeiChat——媒体资源选择组件之media-choice(开源)相关推荐

  1. MRCP 媒体资源控制协议

    媒体资源控制协议(Media Resource Control Protocol, MRCP)是一种通讯协议,用于语音服务器向客户端提供各种语音服务(如语音识别和语音合成). MRCP并不定义会话连接 ...

  2. android图片视频图片封装,Android图片、视频资源选择库(支持图片/视频/仿微信拍照、拍视频)...

    简介 Android媒体资源选择库(支持图片/视频/仿微信拍照.拍视频),非常简单使用,支持图库多选.单选.仿微信拍照拍视频.系统照相机拍照拍视频(v1.1.2).如需使用美颜滤镜.简单图片编辑,ff ...

  3. Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

    2019独角兽企业重金招聘Python工程师标准>>> 本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes ...

  4. Silverstack Lab for Mac(媒体资源数据管理工具)激活版

    Silverstack Lab for Mac 激活版是一款媒体资源数据管理工具,一款集数据管理与每日拍摄小样于一体的工具,轻松应对素材管理与转码,可将现场拍摄与创建拍摄小样融为一体.Silverst ...

  5. 全媒体资源融合发布系统核心技术能力

    1.总体技术能力: 1.成熟系统,能够切实满足用户在复杂网络应用环境下对于大访问量.资源安全性.系统稳定性.多级多部门管理.多终端应用等方面综合要求. 2.平台核心技术应为厂家自主原创,支持银河麒麟\ ...

  6. plex媒体播放器:Plex Media Player for Mac

    Plex Media Player for Mac是一款非常不错的plex媒体播放器,具有强大的实时搜索功能,可让您快速找到所需的电影,表演或歌曲,为您提供了美丽的HTPC体验和轻松的桌面媒体播放器体 ...

  7. 企业新闻媒体资源有哪些类型?从哪里找?

    互联网时代,人们获取信息的来源主要就是网络.企业想要将自己的品牌或是产品推广出去,互联网宣传是很重要的步骤. 企业新闻媒体发稿推广是打响品牌知名度.做好全网营销的第一步.新闻媒体宣传不仅仅性价比很高, ...

  8. 做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你

    做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你 自媒体成为当今一个非常活跃的领域,因为自媒体不像传统媒体一样,只有官方才能够进行内容的生产和推送,自媒体让每个人都可能成为内容的创作者.随着 ...

  9. Java学习day078 Swing用户界面组件(四:选择组件)(复选框、单选钮、边框、组合框、滑动条)

    使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day078   Swing用户界面组件(四:选择组件)(复选框.单选钮.边框.组合框.滑动条) 前 ...

最新文章

  1. 【TensorFlow2.0】(6) 数据统计,范数、最值、求和、均值、最值位置、唯一值、张量比较
  2. 一个build.xml实例
  3. 如何才能识别市场趋势?[转]
  4. Qt使用UDp通信、套接字socket的成员函数bind()的作用
  5. form表单获取多选的值
  6. 从零开始学习Docker
  7. es6 Class 的静态方法
  8. linux基础-01-用户和目录、vim、归档和解压、系统启动流程、加密
  9. 入门学习asp.net mvc
  10. DIV高度自适应方法汇总-----摘自网友
  11. 二进制拆弹实验详解_Population Count算法-求二进制数中1的个数
  12. POSTFIX服务简介
  13. Centos7.7下编译安装 cmake
  14. Linux Cgroups详解(一)
  15. 惠普打印机换硒鼓(墨盒)
  16. js获取浏览器高度 宽度
  17. Unity商店下载存储地址
  18. 计算机网络总线型结构优,总线型拓扑结构优缺点是什么
  19. 重写Readable接口read()方法 传入Scanner导致的BufferOverflowException报错
  20. precision 为什么和recall成反比

热门文章

  1. 本地YUM源配置并设置成本地同步网络源,摆脱依赖包
  2. 监控服务器登录用户的操作脚本(linux下shell.sh)
  3. AI CC2018软件安装教程
  4. java类中定义索引器,C#面向对象基础——字段、属性和索引器
  5. 递归python首尾相同的子字符串_推荐Python语言多层嵌套list的递归处理方法
  6. C语言开发windows桌面程序,开发 windows 桌面软件,现在主流用什么技术?
  7. 2015快捷键在哪里设置_炒股软件的选择通达信软件的基本设置
  8. php 发送带附件的邮件,php发送带附件的电子邮件
  9. Linux下shell脚本之双色球摇号脚本
  10. 深入理解JVM虚拟机(七):虚拟机字节码执行引擎