【发布时间】:2015-04-29 08:04:23
【问题描述】:
我在 AngularJS 中非常陌生,因此我面临一个问题并且无法理解确切的问题。我尝试的代码在普通的 javascript 代码中工作,但现在我想使用自定义服务(工厂函数)。实际上,我有一个文本区域,用户可以在其中输入他们的文本,然后他们可以通过选择任何文本来进行格式化。 (discovertheweb.in/woweditor - 这是我现在创建的现有网站,我想在此代码中应用角度)。现在,我创建了一个自定义服务来检查用户是否选择了任何内容。我在我的自定义服务中使用了以下代码,并尝试获取选择的起点、终点,以便我可以从 textarea 字段中获取选定的文本。但是,问题是我在选择起点和终点都得到了 0 值。当我在指令中使用相同的代码时,它可以工作,但尝试通过服务获取值,两者都显示为 0。请找到下面的代码,让我知道我在这里错过的代码。
定制服务:
(function(){
"use strict";
var wsApp = angular.module("WorkApp");
wsApp.factory("InputCheckService", function(){
var defaultText = document.getElementById("input-text-area");
var selStart = defaultText.selectionStart;
var selEnd = defaultText.selectionEnd;
var selectedText;
if(selStart != selEnd){
selectedText = defaultText.value.substring(selStart, selEnd);
}else{
selectedText = null;
}
return {
selStart: selStart,
defaultText: defaultText,
selEnd: selEnd,
selectedText: selectedText
};
});
}());
我调用此服务的指令。我已经在不同的文件中包含了主控制器内的服务。
(function(){
"use strict";
var wsApp = angular.module("WorkApp");
wsApp.directive("generalDirective", generalDirective);
function generalDirective(){
return {
scope: true,
controller:function($scope, InputCheckService){
$scope.collapsed = false;
$scope.CollpasePanel = function(){
$scope.collapsed = !$scope.collapsed;
};
$scope.updatePara = function(){
alert(InputCheckService.defaultText+"Selection start: "+InputCheckService.selStart+" Selection End: "+ InputCheckService);
/**
* defaultText: defaultText,
selStart: selStart,
selEnd: selEnd,
selectedText: selectedText
*/
}
},
templateUrl: 'directive/general-directive.html'
};
}
}());
如果您需要更多详细信息,请告诉我。
提前感谢您的时间和建议。
问候, 罗宾
【问题讨论】:
-
我错过的完整网站是discovertheweb.in/woweditor