[英]angularJS $watch do not work in directive when use controller to update data
[英]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>
使用按鈕單擊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.