KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Simple example: I have a textarea and want to provide additional behavior to it: do something on enter key and go to next line on shift + enter I suppose that I should provide additional directive to add that behavior. And I've done this: http://jsbin.com/oruvuy/1/edit P.S. One hackie thing seems strange for me: I invoke $digest() manually. Is it ok? Any thoughts? JS: angular.module('Chat', []) .directive('enterSubmit', function () { return { restrict: 'A', link: function (scope, element, attrs) { var submit; $(element).on({ keydown: function (e) { submit = false; if (e.which === 13 && !e.shiftKey) { submit = true; e.preventDefault(); } }, keyup: function () { if (submit) { scope.$eval( attrs.enterSubmit ); // flush model changes manually scope.$digest(); } } }); } }; }); function ChatCtrl($scope) { $scope.messages = [{ text: 'Sample Message', datetime: new Date() }]; $scope.add = function () { $scope.messages.push({ text: $scope.message, datetime: new Date() }); $scope.message = ''; }; $scope.message = ''; } <body ng-controller="ChatCtrl"> <h1>Leave message:</h1> <form> <div class='hint'>Click <Enter> to submit :)</div> <textarea cols="30" rows="5" ng-model="message" enter-submit='add()' ></textarea> <br /> <button type="submit" ng-click="add()">Send message!</button> </form> <h3>Messages list:</h3>
Tags (comma-separated)
Save Edits
Cancel