Tôi đã sau đây trên một trang - Mã đầy đủ trong này PlunkerAngularJS trên nhập chỉ vào mẫu đầu vào không có giá trị tiết kiệm Mẫu
Có một tùy chỉnh onEnter
chỉ thị mà các cuộc gọi một chức năng khi nhập được nhấn vào một đầu vào hình thức trò chuyện . Đoạn mã dưới đây
//**HTML View**
<div ng-controller="mainCtrl">
<ul>
<li ng-repeat="chat in chatMessages">
{{chat.username}}<br/>
{{chat.message}}
</li>
</ul>
</div>
<form id="chatForm" name="chatForm" ng-controller="formCtrl">
<label for="chat-username">User: </label>
<input type="text" id="chat-username" class="chat__username" ng-model="chat.username" required>
<label for="chat-input">Chat: </label>
<input type="text" id="chat-input" class="chat__input" on-enter="sendChat()" ng-model="chat.message" required>
<a href="#" class="chat__submit icon-comments" id="chat-submit" ng-click="sendChat()" ng-disabled="isChatValid()">Chatme</a>
</form>
//**Javascript**
app.controller('formCtrl',function($scope,Chats){
$scope.sendChat = function() {
if($scope.isChatValid()) {
return;
}
console.log(JSON.stringify($scope.chat));
var msg = {};
angular.copy($scope.chat,msg);
Chats.data.push(msg);
};
$scope.isChatValid = function() {
return $scope.chatForm.$invalid;
};
});
Vấn đề là giá trị của đầu vào (message
) sẽ không được lưu vào mô hình phạm vi (chat
). Nếu tôi xóa chỉ thị onenter
thì nó sẽ hoạt động. Tôi đang thiếu gì ở đây? Mọi trợ giúp sẽ tuyệt vời
ah không thấy bạn cũng đã nhận nó – shaunhusain
cá nhân tôi không thích giải pháp này bởi vì nó sử dụng $ eval – Iamisti
Lúc đầu tôi đã có cùng một ý kiến như @lamisti. Tuy nhiên, tôi nhận ra rằng giải pháp này có lợi thế lớn - nó không tạo ra phạm vi cô lập, do đó sẽ không có xung đột với các chỉ thị tiềm năng khác với phạm vi cách ly, có thể áp dụng cho cùng một phần tử DOM. – Klon