我创建了一些名为信息的值,并尝试对其进行编辑。
但是它在控制器中不起作用。
然后,下面的示例不起作用。



(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()完成操作。

10-08 18:40