Javascript AngularJS:如何设置自定义指令的属性

Javascript AngularJS:如何设置自定义指令的属性,javascript,jquery,html,angularjs,angularjs-directive,Javascript,Jquery,Html,Angularjs,Angularjs Directive,我有一个自定义指令,它使用templateUrl在模板中保存元素和其他HTML元素。该指令应允许用户使用任何印度语言进行键入(使用任何书写脚本,如和其他脚本)。用户将可以选择输入语言 此指令将在我的HTML中像这样使用: 现在我的问题是,在我的主代码中,我应该如何检索textarea中输入的文本,该文本位于templateUrl指定的template.html中?由于我在textarea上使用了ng model,我的链接功能范围内有可用的文本 <textarea id="inputFiel

我有一个自定义指令,它使用
templateUrl
在模板中保存
元素和其他HTML元素。该指令应允许用户使用任何印度语言进行键入(使用任何书写脚本,如和其他脚本)。用户将可以选择输入语言

此指令将在我的HTML中像这样使用:

现在我的问题是,在我的主代码中,我应该如何检索
textarea
中输入的文本,该文本位于
templateUrl
指定的template.html中?
由于我在
textarea
上使用了
ng model
,我的链接功能范围内有可用的文本

<textarea id="inputField"
          placeholder="start typing....."
          ng-model="inputText"
          rows="5">
</textarea>
我该怎么做?有没有其他更好的方法来使用AngularJS的力量?我浏览了这些帖子,但没有任何帮助。或者可能是我不明白如何在工作中使用它

我在github上的完整代码:

注:

  • 我应该能够在应用程序的任何地方使用此指令,任何次数
  • 它应该是便携式的;我应该能够在我的任何项目中使用它,或者任何其他开发人员都应该能够使用它,而不需要太多

由于它已经在范围内,您只需使用

console.log($("keybuddy textarea").scope().inputText);
AngularJS版本:

console.log(angular.element("keybuddy textarea").scope().inputText);

编辑:根据实际源代码进行调整。

您可以设置与指令范围的双向绑定。这将允许您的指令更改父作用域中的值,然后您可以从控制器读取该值

在指令配置中,使用要用于绑定的属性名称设置scope属性,例如:

scope: { 
    model: '='
}
在指令的模板中,可以将textarea的ng模型设置为该绑定名称

<textarea ng-model="model"></textarea>
模板:

<button ng-click="printText();">Print text</button>
打印文本
角度:-)

这里不需要使用jQuery。角度足够了。您可以按如下方式更改代码:

<keybuddy></keybuddy>
<button onclick="printText()">Show Text</button>

<script>
    var printText = function () {
        console.log($("keybuddy").value);
    }
</script>
在你看来:

<keybuddy model="myInputText"></keybuddy>

<button ng-click="showText()">Show Text</button>
并更新指令,使其具有如下所示的
范围
(替换“范围:true”):


阅读更多关于

我需要textarea的值在哪里调用它当我在HTML中使用两次
时会发生什么?我需要分别从两个实例中检索textarea值。只需在作用域中为它们分配单独的变量<代码>和
。使用
$scope.inputext1
$scope.inputext2
读取值。
<button ng-click="printText();">Print text</button>
<keybuddy model="myInputText"></keybuddy>

<button ng-click="showText()">Show Text</button>
$scope.showText = function() {
    console.log($scope.myInputText);
}
scope: {
    inputText: '=model'
}