簡體   English   中英

更新AngularJS控制器的數據

[英]Update data of AngularJS controller

我正在編寫一個簡單的AngularJS腳本,以從socket.io事件加載數據,然后將其添加到ng模板中,這是我的JS:

// Socket.io logic:
var messages = [];
socket.on("chat message", function(message){
    messages.push(message); //message = {username: String, text: String}
});

// AngularJS logic:
var app = angular.module("chat", []);
app.controller("MessagesCtrl", function ($scope) {
    $scope.messages = messages;    
})

現在,我想了解在向郵件中添加新郵件時如何更新ng模板[] ...

這是一次嘗試的小提琴示例: http : //jsfiddle.net/v8v67ohn/1/
如您所見,單擊按鈕沒有任何反應...

我究竟做錯了什么?

使用ng-click代替在jQuery事件處理程序中設置新的MessagesCtrl。

您可以這樣做:

JS:

var app = angular.module('myApp', []);

app.controller('MessagesCtrl', function ($scope) {
    $scope.messages = [{username: "foo", text: "hi"}, {username: "bar",text: "hey"}, {username: "foo",text: "LOL"}]    

    $scope.onClick = function() {
        $scope.messages = [{username: "foo", text: "hi"}, {username: "bar",text: "hey"}, {username: "foo",text: "LOL"}, {username: "new one", text: "Hi all, I'm new here"}]
    };
});

HTML:

<body ng-app="myApp" ng-controller="MessagesCtrl">
    <script type="text/ng-template" id="message.html">
        <b>{{message.username}}</b>: {{message.text}}
    </script>        
    <div>
        <div ng-repeat="message in messages" ng-include="'message.html'">
        </div>
    </div>
    <button id="click" ng-click="onClick()">aaaa</button>
</body>

jsfiddle-demo

使用按鈕單擊ng-click =“ newData()”函數

<button id="click" ng-click="newData()">aaaa</button>

並設置在您的控制器中

$scope.newData=function(){


 $scope.messages = [{username: "foo", text: "hi"}, {username: "bar",text: "hey"}, {username: "foo",text: "LOL"}, {username: "new one", text: "Hi all, I'm new here"}]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM