javascript - 更改服务中的数据

标签 javascript angularjs angular-components

我有一个从 URL 获取 JSON 的服务,我想更改该数据,但我似乎无法做到这一点。现在我在 Controller 中更改了此设置,但这似乎很困惑,范围未到达我想要的位置。

//SERVICE
app.service("servers", function ($http, $q)
{
    // Grab json
    var deferred = $q.defer();
    $http.get('http://www.mocky.io/v2/58bea87e260000c318f07bfd').then(function (data)
    {
        deferred.resolve(data);
    });

    this.getItems = function ()
    {
        return deferred.promise;
    }

})


   // CONTROLLER

.controller("AppCtrl", function ($scope, servers, geoIP) {
    var promise = servers.getItems();
    promise.then(function (data)
    {
        $scope.items = data.data.items;
    });

    $scope.getSelectedItem = function() {
        return servers.selectedItem;
    }


    $scope.selectServer = function(item)
    {
        servers.selectedItem = item;

         servers.selectedItem.refactored_match_state = lowerCamelCaseUnderscoreRefactor(servers.selectedItem.session.attributes.match_state);

    }

    //COMPONENT/TEMPLATES
    //dbServerTable
    <tr data-ng-repeat="item in items | filter:search | orderBy:'name'"  data-ng-click="selectServer(item)">
        <td>{{item.display_name}}</td>
    </tr>

    //dbServerInfoSidebar
    <li>{{getSelectedItem().refactored_match_state}}</li>

任何人都可以用代码向我展示如何更改服务中的数据,该服务可以由任何可以访问该服务的 Controller 在任何地方使用

最佳答案

服务的编码方式是一种反模式,应该避免。引用这个link .

如下所示更改您的服务,并在 .then 函数中返回 data 之前对数据进行修改。

app.service("servers", function ($http)
{
    this.getItems = function ()
    {
        return $http.get('http://www.mocky.io/v2/58bea87e260000c318f07bfd')
              .then(function (data)
                  {
                    // **** Modify data here ****
                    return data;
                  });
    }

})

关于javascript - 更改服务中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45422200/

相关文章:

javascript - 将 TextBox 值获取到 ToolTip 标题

javascript - Ionic2:如何打包包括css在内的外部模块?

dart - 在 AngularDart 中的媒体更改时将应用程序布局抽屉持久更改为临时

javascript - JavaScript 中数组后面的冒号

javascript - 为什么这只能在页面加载时正常工作?

javascript - Angular 1.0 到 Angular 1.6 [错误]

angularjs - OAuth:如何设置动态回调URL?

angular - AngularDart组件下拉列表选择selectionChange事件

angularjs - 在具有隔离范围的嵌套指令中延迟双向绑定(bind)

JavaScript 浏览器检测有效,但之后显示 'undefined'