gpt4 book ai didi

angularjs - 如何观看延期服务属性(property)?

转载 作者:行者123 更新时间:2023-12-02 12:38:14 25 4
gpt4 key购买 nike

如果我有以下简单的 Controller 和服务。

<div ng-controller="MessagesCtrl">
<ul>
<li ng-repeat="message in data.messages">
{{ message }}
</li>
</ul>
</div>

myApp.factory('Data', function () {
var _messages = [];
return {
messages: _messages,
getMessages: function() {
$http.get('/messages').then(function(response) {
_messages = response.data;
});
}
};
});

function MessagesCtrl($scope, Data) {
$scope.data = Data;
$scope.data.getMessages();
}

我希望当 AJAX 请求完成并填充对象时,messages 模型能够自动更新,但事实并非如此。这应该如何运作? (我有点想问这种结构的最佳实践是什么)。

编辑 - 工作解决方案:

<div ng-controller="MessagesCtrl">
<ul>
<li ng-repeat="message in data.messages">
{{ message }}
</li>
</ul>
</div>

myApp.factory('Data', function () {
return {
getMessages: function() {
var _this = this;
$http.get('/messages').then(function(response) {
_this.messages = response.data;
});
}
};
});

function MessagesCtrl($scope, Data) {
$scope.data = Data;
$scope.data.getMessages();
}

最佳答案

我相当确定您遇到的是 JavaScript 问题,而不是 AngularJS 相关问题。让我们删除 AngularJS 相关代码,只留下 JavaScript 部分:

function factory() {
var _messages = [];
return {
messages: _messages,
getMessages: function() {
_messages = [1, 2, 3, 4];
}
}
}

> var test = factory();
undefined
> test.messages
[]
> test.getMessages()
undefined
> test.messages
[]

test.messages 指向原始 _messages 数组,而后来 _messages 发生了变化,但 test.messages 没有变化。

关于angularjs - 如何观看延期服务属性(property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277331/

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