Привет, я новичок в angular js и пытаюсь написать приложение чата, используя сокет io и angular js с ionic для платформы Android. Но на моей странице чата есть одна проблема. Я пытаюсь привязать textbox
к переменной $scope.message
, используя ng-model
, но она не привязывается в качестве теста, когда я показываю одно и то же значение переменной на самой странице, она работает как есть, но в контроллере я получаю значение как undefined
или пустое
index.html
<body ng-app="farmApp" ng-controller="farmAppController" >
<ion-content>
<ul id="Messeges">
<li class="right">Welcome to Chat</li>
<li ng-repeat="chatMessage in messages">
{{chatMessage}}
</li>
</ul>
<form ng-submit="sendMessage()">
<input placeholder="Your message" ng-model="message">
<input type="submit" name="send" id="send" value="Send" class="btn btn-success">
<br/>
{{message}} //This updates the value as i type in textbox
</form>
</ion-content>
</body>
но когда я вижу печать этой модели на консоли, она показывает undefined, когда я определяю в начале в контроллере, тогда она показывает пустое значение
Контроллер.js
var farmAppControllers = angular.module('farmAppControllers',[]);
farmAppControllers.controller('farmAppController',['$scope','socket',function($scope,socket){
$scope.messages = [];
$scope.message = ''; //When i don't declare then console shows undefined on sendMessage function if declared then empty
socket.on("update", function (data) {
console.log(data);
$scope.messages.push(data);
});
$scope.sendMessage = function (){
console.log($scope);
console.log($scope.message); // This shows undefined or empty on console
socket.emit("msg",$scope.message);
$scope.messages.push($scope.message);
$scope.message ='';
};
}]);
Мой app.js
'use strict';
var farmApp = angular.module('farmApp', ['farmAppControllers','farmAppServices','ionic']);
И services.js для обертки сокета
var farmAppServices = angular.module('farmAppServices',[]);
farmAppServices.factory("socket",function($rootScope){
var socket = io.connect();
return {
on:function (eventName,callBack){
socket.on(eventName,function(){
var args = arguments;
$rootScope.$apply(function(){
callBack.apply(socket,args);
});
});
},
emit:function(eventName,data,callBack){
socket.emit(eventName,data,function(){
var args = arguments;
$rootScope.$apply(function(){
if(callBack){
callBack.apply(socket,args);
}
});
});
}
};
});
я застрял здесь ... я пытаюсь найти это в Google, но не могу решить. В случае путаницы не стесняйтесь комментировать. Любая помощь будет здорово.
ОБНОВЛЕНИЕ
Когда я использовал первый ответ на этот вопрос, проблема была решена, но до сих пор не ясно, почему ng-submit не работает? Любая идея, почему? Потому что кажется, что я все еще не могу обновить область просмотра с контроллера?