Mon interface
<ion-view title = "{{roomName}}" style = "height:90%;margin-top: 45px " ng-init = "init()">
<ion-pane>
<ion-content zooming = "true" class = "no-header">
<ion-list>
<ion-item class="item item-input-inset">
<label class="item-input-wrapper">
<input type="text" placeholder="Your Message To Send" ng-model = "myMessage">
</label>
<button class="button button-small" ng-click = "sendMyMessage()">
发送
</button>
</ion-item>
</ion-list>
</ion-content>
</ion-pane>
<ion-pane style = "margin-top: 55px">
<ion-content zooming = "true" class = "no-header" style = "margin-bottom: 50px">
<ion-list>
<ion-item class = "item item-avatar-left my-item"
collection-repeat = "message in messages"
collection-item-width="'100%'"
collection-item-height="75">
<img ng-src="{{message.user.avatarUrl}}">
<h2>{{message.user.name}}:</h2>
<p>{{message.content}}</p>
</ion-item>
</ion-list>
</ion-content>
</ion-pane>
</ion-view>
Mon contrôleur
atMoon.controller('roomCtrl',['$scope','myService', function ($scope, myService) {
$scope.sendMyMessage = function () {
console.log($scope.myMessage)
myService.sendMyMessage($scope, $scope.myMessage)
}
$scope.init = function () {
myService.getMessages($scope);
}
}])
Le $scope.myMessage imprimé est toujours indéfini. Si j'écris $scope.myMessage = "xxxx" dans le contrôleur, il peut être affiché dans l'interface, donc les données ne peuvent passer que du modèle à la vue, pas de la vue au modèle S'il vous plaît Merci beaucoup pour la réponse
Je soupçonne que vous avez été trompé par l'héritage prototypique de Scope
Ces commandes comme
ion-content
ont leurs propres portées. Ensuite, vous écrivezng-model="myMessage"
dans la vue. En fait, le contenu que vous remplissez dans la zone de saisie est placé sur la portée deion-item
, et vousroomCtrl
. dans la portée demyMessage
est toujoursundefined
; et après avoir attribué une valeur àmyMessage
dans le contrôleur, puisqu'il n'y a pas d'attribution-item
sur la portée demyMessage
, cela changera de Recherche sur le chaîne de prototypes, puis recherchezroomCtrl
sur le périmètre demyMessage
.Voici ma solution préférée :
J'ai également rencontré ce problème. Cela semble être un problème avec la version angulaire.js-1.3.0. Il n'est pas apparu dans les versions inférieures. J'ai fait une expérience de test et mis myMessage dans un objet comme suit. être testé et réussi, je ne sais pas pourquoi (peut-être que la nouvelle version d'Angular a optimisé les montres, trop de montres affecteront l'efficacité) :
Défini dans le contrôleur
$scope.Messages={myMessage:""}