gpt4 book ai didi

javascript - 更新 Controller 数据不会更新 View - Angular JS - Ionic

转载 作者:行者123 更新时间:2023-11-30 00:29:14 25 4
gpt4 key购买 nike

我有这个 Controller :

.controller("mainctrl",function($scope,$state){
var self = this;

var usuario = window.localStorage.getItem('usuario');
this.msjs=[];

var res = window.localStorage.getItem(usuario+'_msjs');
if(res===null)
{
this.msjs=[];
}
else{
this.msjs=JSON.parse(res);
}

$scope.$on('newMessageReceived', function(e, msg) {
//alert('message received:'+msg);
self.msjs.push(msg);
alert('mensaje recibido');
alert(JSON.stringify(self.msjs));

window.localStorage.setItem(usuario+'_msjs',JSON.stringify(self.msjs));
$state.reload();

});
}

和 View :

<ion-view ng-controller="mainctrl as m" >
<ion-nav-buttons side="right">
<button class="button" ng-click="m.logout()">Logout</button>
</ion-nav-buttons>
<ion-content id="msjcontent">
<h1 class="button-positive" id="log">Mensajes</h1>
<div class='card' ng-repeat="msj in m.msjs track by $id($index)">
{{msj}}
</div>

</ion-content>
</ion-view>

当 $scope 接收到事件时,它会在“msjs”数组中推送一个新元素。 View 不更新数据。我不得不使用 $state.reload() 来刷新 $state(来自 Angular-Ionic 的 ui-router)并观察变化。这种刷新给我带来了问题,例如 $scopes 的多个副本(每个 $state.reload() 1 个)。我已经尝试过 $scope.apply() 但它没有用。我认为问题可能出在 Ionic/angular ui-router 上。

我想知道一种无需刷新 $state 即可将 msjs 数组绑定(bind)到 View 的更好方法。

谢谢。

最佳答案

我写的是 $scope.apply(),正确的方法是 $scope.$apply()。

关于javascript - 更新 Controller 数据不会更新 View - Angular JS - Ionic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com