- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在将 Google Transliterate 与 Angular 项目集成方面需要一些帮助,下面是使 DOM 中的所有所需元素都可音译的代码段。
function za() {
google.load("elements", "1", {packages: "transliteration"});
google.setOnLoadCallback(procTA);
}
// calls the helper function for each of input as well as textarea elememnts in the page
function procTA() {
procTAHelp('textarea');
procTAHelp('input');
}
// for each element of xtype (input or textarea), it creates another attribute
// whose name is <xtype><counter>id. That way each element gets a new
// attribute name (which acts as an identifier for the transliteration process
// and a flag which check whether to enable (or not) the English <-> Hindi
// transliteration change
// if gtransx is set and is "no" then nothing is done, else it enables the transliteration
// most of the remaining code is a cut-paste from the help pages for the deprecated google transliteration api
function procTAHelp(xtype) {
var textAreaList = document.getElementsByTagName(xtype);
for(var i = 0; i < textAreaList.length; i++) {
var attrName = "gtransed";
var noTrans = "gtransx";
var taInd = i + 1;
if((textAreaList[i].getAttribute(noTrans) == null) && (textAreaList[i].getAttribute(attrName) == null)) {
var tcc;
var att = document.createAttribute(attrName);
textAreaList[i].setAttributeNode(att);
var textAreaId = xtype.concat(taInd.toString()).concat("id");
textAreaList[i].id = textAreaId;
var options = {
sourceLanguage: 'en', // destinationLanguage: ['hi','kn','ml','ta','te'],
destinationLanguage: ['hi'],
transliterationEnabled: true,
shortcutKey: 'ctrl+g'
};
tcc = new google.elements.transliteration.TransliterationControl(options);
var transIdList = [textAreaId];
tcc.makeTransliteratable(transIdList);
tcc.addEventListener(google.elements.transliteration.TransliterationControl.EventType.SERVER_UNREACHABLE, serverUnreachableHandler);
tcc.addEventListener(google.elements.transliteration.TransliterationControl.EventType.SERVER_REACHABLE, serverReachableHandler);
}
}
}
// Handler for STATE_CHANGED event which makes sure checkbox status reflects the transliteration enabled or disabled status.
function transliterateStateChangeHandler(e) {
}
// SERVER_UNREACHABLE event handler which displays the error message.
function serverUnreachableHandler(e) {
document.getElementById("errorDiv").innerHTML = "Transliteration Server unreachable";
}
// SERVER_UNREACHABLE event handler which clears the error message.
function serverReachableHandler(e) {
document.getElementById("errorDiv").innerHTML = "";
}
za();
下面是读取正在音译的特定元素的 Angular 片段。
$scope.makePost = function() {
setTimeout(function(){
$scope.$apply();
console.log($scope.newPost.text);
}, 500);
};
正在被音译的 Textarea 元素。
<textarea
ng-init="addTrnsEngine()"
ng-trim='false'
id="tweet"
class="form-control primaryPostArea"
ng-model="newPost.text"
ng-model-options="{ debounce: 2000 }"
placeholder="Say something...">
</textarea>
因此,一旦 Google Transliterate 完成工作并更新 DOM,我就会尝试在超时后使用 $scope.$apply() 刷新范围。文本区域中的所有单词都会更新为新语言,但最后输入的单词不会在范围内更新,直到模型遇到新字符。
最佳答案
使用 contenteditable div 作为输入而不是 textarea。
contenteditable 指令是:
app.directive("contenteditable", function() {
return {
restrict: "A",
require: "ngModel",
link: function(scope, element, attrs, ngModel) {
function read() {
ngModel.$setViewValue(element.html());
}
ngModel.$render = function() {
element.html(ngModel.$viewValue || "");
};
element.bind("blur keyup change", function() {
scope.$apply(read);
});
}
};
});
在 div 标签中使用 contenteditable 指令:
<div contenteditable ng-model="text"></div>
Here是如何使用指令使用 contenteditable div 的示例。这应该可以像解决我的问题一样解决您的问题。
关于javascript - Google Transliterate 结果未在 Angular Controller 中使用的范围内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243502/
我有三个 td,并且正在尝试将每个内部的函数限制为仅该 td。我该怎么做呢?使用此代码,它会获取所有 3 个图像并将它们全部插入到 h2 之前: jQuery("td.frontpage_news")
这是所需的通用公式:if((b2-b1)=c1,True,False但是,我需要 b2-b1约等于 c1 , 在 5 内大约单位(在本例中为秒)。有没有可以处理这个的函数? 最佳答案 你也可以试试这个
我有三个整数,作为命令行参数传入后赋值给变量。我想验证每个整数都在 1-5 范围内。有没有一种方法可以在不使用如下所示的 if 语句的情况下在 Java 中完成此操作?我想避免这样做(注意伪代码):
检查某个变量 X 是否在某个变量 Z 的 n 个数字之内的最简洁方法是什么。n 是任意定义的数字(即 3)。 所以我想要 if (z {something} x){ // run code i
我的顶级 build.gradle (Gradle 2.2) 中有类似的东西 ext.repo = "https://my-artifactory-repo" buildscript { re
我只是在我的 jsp 页面中进行随机技巧和测试。我想使用 Attributes 将 request 范围对象存储在 session 范围对象中。存储后,当尝试从请求属性中提取值(存储在 session
我正在使用 Spring 。我有一个外部化属性文件。我正在按如下方式加载它。 现在我如何将 session 中的属性作为键值对保存? 我尝试编写一个扩展 ServletContextListene
我有以下范围: scope :billable, -> (range_start = nil, range_end = nil) { joins(:bids) .where("au
请看我的示例代码: var testObject = new SomeClass(); using (testObject) { //At this point how can the te
我目前在保持在 vector 范围内时遇到一些问题。 在下面的代码中,我试图检查正在检查的数字是否小于或等于它后面的数字 #include #include #include bool fun(
有人可以帮我解决下面的(简化的)代码吗?我试图从幻灯片事件函数中调用 doTheSlide() 函数。我对 JS 范围的理解仍然有点可疑。 实现这一目标的正确方法是什么?我收到此错误: Uncaugh
如何在 Swift 中检查时间是否在下午 6 点到晚上 11 点之间?我在使用 NSDateFormatter 时遇到了困难,我觉得一定有更简单的方法。 最佳答案 使用NSCalendar: let
我目前正在尝试创建一个 2D 横向滚动条,并且我目前有我的“世界”绘图(暂时是一个大白框),但我无法弄清楚世界地图的边缘与边缘之间的任何关系确保视口(viewport)始终完全被 map 覆盖。 我的
我正在学习李普曼,而且我只是在学习。我在这里尝试编写一个代码,该代码将返回 vector 中的最小元素。当我在 Codeblocks 中编译我的代码时,它说:“模板声明不能出现在 block 范围内”
我有三个日期对象。我该如何比较它们才能确定它们之间的相对差异。 oldDate = newDate() - 5; midDate = newDate() - 2.5; newDate = newDat
我需要检查对象“objCR”是否存在于当前范围内。我尝试使用以下代码。 if(objCR == null) alert("object is not defined"); 让我知道哪里错了。 最佳答案
如何检查 IP 地址是否属于私有(private)类别? if(isPrivateIPAddress(ipAddress)) { //do something } 如有
我正在开发一个 Firefox 插件,它可以转换用户通过用户选择突出显示的屏幕温度。转换后,用户选择将替换为 ID 为 alreadyconverted 的 span HTML 元素,其中包含原始温度
我正在开发一个邮资应用程序,该应用程序需要根据多个邮政编码范围检查整数邮政编码,并根据邮政编码匹配的范围返回不同的代码。 每个代码都有多个邮政编码范围。例如,如果邮政编码在 1000-2429、254
我正在使用 excel 范围进行连接:Set rng = Range("A1:A8")如果范围内的单元格之一为空,则会添加一个空格。 你如何阻止这个空间被添加? 最佳答案 假设您在那些非空单元格中有常
我是一名优秀的程序员,十分优秀!