我创建了一些名为信息的值,并尝试对其进行编辑。
但是它在控制器中不起作用。
然后,下面的示例不起作用。
(function () {
var app = angular.module('app', []);
app.value('information', []);
app.run(['information', function (information) {
information = [1, 2, 3, 4];
}]);
app.controller('myController', [
'$scope', 'information', function ($scope, information) {
$scope.inf = information;
}]);
})();
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="app">
<div ng-controller="myController">
<p ng-repeat="i in inf">
{{ i }}
</p>
</div>
</body>
</html>
最佳答案
因为当您注入information
时,它是对information
对象的引用,该对象存储在Angular缓存中。
我不建议从控制器修改value
(尽管您可以:JSFiddle)。
您最好使用factory
:
app.factory('information', function () {
var info = [];
return {
get: function () {
return info;
},
set: function (newInfo) {
info = newInfo;
}
};
});
在控制器内部,使用
information.get()
和information.set()
完成操作。