草庐IT

javascript - 在 Angular 中编辑 JSON 搜索结果

coder 2024-07-25 原文

我现在正在将数据从外部 JSON URL 正确提取到母版页,但我的详细信息页面似乎没有传递从 http.get 接收到的对象 initallt。可以在 CODEPEN 的代码笔中查看该应用程序的主要部分。

<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="search" ng-model="query" placeholder="Search Slugname">
<button class="button button-dark" ng-click="getOrders()">Submit</button>
</label>

如果我的用户想手动更改日期 (order.date) 值以说“10/8/16”。 如何访问/编辑从外部 API 返回的任何 JSON 值?

我最终希望在我的应用程序中编辑返回的 JSON 数据,然后将修改后的数据发回 PHP API 服务器。

最佳答案

您的主要问题是您想要修改来自 $http 调用的传入数据。

你可以实现一个http拦截器,response方法会接受response修改它然后返回给调用者。由于 http 拦截器将接受所有传入的请求,只需检查 url 开始而不修改其他请求。

angular.module('ionicApp', ['ionic'])
.factory('httpInterceptor', function($q, $rootScope) {
    var httpInterceptor = {
        response: function(response) {
            var deferred = $q.defer();
            var results = response.data;
            var urlStart = 'http://mvcframe.com/wpapi/wp-json/wp/v2/pages?slug=';
            if (response.config.url.startsWith(urlStart)) {
                angular.forEach(results, function(result, key) { 
                    result.date = '10/8/16'; 
                });
            }
            deferred.resolve(response);
            return deferred.promise;
        }
    };
    return httpInterceptor;
})
.config(function($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
})
.controller('ListController', 
    ['$scope', '$http', '$state', '$stateParams', '$window', '$location', 
    function($scope, $http, $state, $stateParams, $window, $location) {
        $scope.getOrders = function(query) {
            $http.get('http://mvcframe.com/wpapi/wp-json/wp/v2/pages?slug=' + query)
            .success(function(data) {
                $scope.orders = data;
            })
        }
        $scope.orders = [];
}]);

我对您的 html 所做的唯一修改是将查询参数直接发送到 ng-click 上的函数

<html ng-app="ionicApp">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title>Tabs Example</title>
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
</head>
<body ng-controller="ListController">
    <ion-header-bar class="bar-dark" align-title="center">
        <h2 class="title">Order Search</h2>
    </ion-header-bar>
    <ion-content padding="true" class="has-header">
        <div class="item item-input">
            <i class="icon ion-search placeholder-icon"></i>
            <input type="text" ng-model="query" placeholder="Search Slugname">
            <button type="submit" class="button button-dark" ng-click="getOrders(query)">Submit</button>
        </div>
        <p>An example and working slug search term is test-3. The JSON can be viewable in a browser using https://mvcframe.com/wpapi/wp-json/wp/v2/pages?slug=test-3</p>
        <ion-list>
            <ion-item ng-repeat="order in orders | filter:query" class="item-thumbnail-left item-text-wrap" href="#/tab/list/{{order.id}}">
                <h2>Page ID: {{order.id}}</h2>
                <h3>Date created: {{order.date}}</h3>
                <h2>Page URL: £{{order.link}}</h2>
                <h2>Page Title: £{{order.title/rendered}}</h2>
            </ion-item>
        </ion-list>
    </ion-content>
</body>
</html>

我差点忘了代码笔在这里:http://codepen.io/pachon1992/pen/QEodJR

编辑----------------------------

根据评论,您希望您的用户手动更新数据吗?例如,您想更新日期,您可以为用户启用输入以编辑数据,因为 Angular 是双向数据绑定(bind)将修改您的数据。

<html ng-app="ionicApp">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title>Tabs Example</title>
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
</head>
<body ng-controller="ListController">
    <ion-header-bar class="bar-dark" align-title="center">
        <h2 class="title">Order Search</h2>
    </ion-header-bar>
    <ion-content padding="true" class="has-header">
        <div class="item item-input">
            <i class="icon ion-search placeholder-icon"></i>
            <input type="text" ng-model="query" placeholder="Search Slugname">
            <button type="submit" class="button button-dark" ng-click="getOrders(query)">Submit</button>
        </div>
        <p>An example and working slug search term is test-3. The JSON can be viewable in a browser using https://mvcframe.com/wpapi/wp-json/wp/v2/pages?slug=test-3</p>
        <ion-list>
            <ion-item ng-repeat="order in orders | filter:query" class="item-thumbnail-left item-text-wrap" href="#/tab/list/{{order.id}}">
                <h2>Page ID: {{order.id}}</h2>
                <div><input type="text" ng-model="order.date"></div>
                <h2>Page URL: £{{order.link}}</h2>
                <h2>Page Title: £{{order.title/rendered}}</h2>
            </ion-item>
            <button type="button" class="button button-dark" ng-click="update()">Update</button>
        </ion-list>
    </ion-content>
</body>
</html>

在您的 Controller 中,您可以为每个通常通过 PUT 端点调用的订单调用 http 服务

angular.module('ionicApp', ['ionic'])

.controller('ListController', ['$scope', '$http', '$state', '$stateParams', '$window', '$location',
    function($scope, $http, $state, $stateParams, $window, $location) {
        $scope.query = "";
        $scope.getOrders = function(query) {
            $http.get('http://mvcframe.com/wpapi/wp-json/wp/v2/pages?slug=' + query)
                .success(function(data) {
                    $scope.orders = data;
                });
        }
        $scope.orders = [];
        $scope.update = function() {
            angular.forEach($scope.orders, function(order) {
                //whetever url you are using
                $http.put('http://mvcframe.com/wpapi/wp-json/wp/v2/pages/update/' + order.id, order, {})
                    .success(function(data) {
                        console.log('updated');
                    });
            });
        };
    }
]);

我已经编辑了codepen

关于javascript - 在 Angular 中编辑 JSON 搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867910/

有关javascript - 在 Angular 中编辑 JSON 搜索结果的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  3. ruby-on-rails - Nokogiri:使用 XPath 搜索 <div> - 2

    我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll

  4. ruby-on-rails - 如何使用 Rack 接收 JSON 对象 - 2

    我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":

  5. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby - 如何搜索有用的 ruby - 2

    寻找有用的ruby的好网站是什么? 最佳答案 AgileWebDevelopment列出插件(虽然不是ruby​​gems,我不确定为什么),并允许人们对它们进行评级。RubyToolbox按类别列出gem并比较它们的受欢迎程度。Rubygems有一个搜索框。StackOverflow对最有用的rails插件和ruby​​gems有疑问。 关于ruby-如何搜索有用的ruby,我们在StackOverflow上找到一个类似的问题: https://stacko

  8. ruby - 如何搜索、递增和替换 Ruby 字符串中的整数子字符串? - 2

    我有很多这样的文档:foo_1foo_2foo_3bar_1foo_4...我想通过获取foo_[X]的所有实例并将它们中的每一个替换为foo_[X+1]来转换它们。在这个例子中:foo_2foo_3foo_4bar_1foo_5...我可以用gsub和一个block来做到这一点吗?如果不是,最干净的方法是什么?我真的在寻找一个优雅的解决方案,因为我总是可以暴力破解它,但我觉得有一些正则表达式技巧值得学习。 最佳答案 我(完全)不懂Ruby,但类似这样的东西应该可以工作:"foo_1foo_2".gsub(/(foo_)(\d+)/

  9. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  10. ruby - Ruby 中的必应搜索 API - 2

    我读了"BingSearchAPI-QuickStart"但我不知道如何在Ruby中发出这个http请求(Weary)如何在Ruby中翻译“Stream_context_create()”?这是什么意思?"BingSearchAPI-QuickStart"我想使用RubySDK,但我发现那些已被弃用前(Rbing)https://github.com/mikedemers/rbing您知道Bing搜索API的最新包装器(仅限Web的结果)吗? 最佳答案 好吧,经过一个小时的挫折,我想出了一个办法来做到这一点。这段代码很糟糕,因为它是

随机推荐