在ng-click中传递元素

时间:2014-07-15 13:43:16

标签: javascript angularjs

我需要将ng-click中的元素作为参数传递。

<textarea id="chat-msg" name="chat-msg" class="p-r-40 chat-reply form-control"></textarea>
<img src="libs/converse/lib/emoji/smile.png" class="image-size" ng-click="insertEmotion(document.getElementById('chat-msg'))" ></img>

这里onclick运行正常,但我怎么能在ng-click中传递它?

3 个答案:

答案 0 :(得分:1)

考虑将document.getElementById部分移到insertEmotion()函数中。

像这样调用insertEmotion('chat-msg'),其中insertEmotion将元素名称作为参数。

答案 1 :(得分:0)

听起来你可能正试图在控制器中操纵DOM,这实际上不是“角度方式”。更好的方法可能是寻求将textarea绑定到模型变量,并使ngClick指令更新模型变量。

例如:

<textarea ng-model="chat"></textarea>
<img src="libs/converse/lib/emoji/smile.png" class="image-size" ng-click="chat = chat + ':-)'" ></img>

这是一个说明这一点的傻瓜:http://plnkr.co/edit/d0hMVbrwKy6nBgVxWBQP?p=preview

答案 2 :(得分:0)

也许尝试创建聊天对象并将模型分配给这样的视图?

http://jsfiddle.net/e9vJH/

var app = angular.module('emotionApp',[]);

app.controller('EmotionCtrl',function($scope) {
    $scope.chat = 'Chat message';
    $scope.insertEmotion = function(emotion) {
        $scope.chat = $scope.chat + emotion;
    };
});


<div ng-app="emotionApp" ng-controller="EmotionCtrl">
    <textarea ng-model="chat"></textarea>
    <hr>
    <button ng-click="insertEmotion(':)')">Insert</button>
</div>