簡體   English   中英

從狀態解析功能訪問返回的數據

[英]accessing returned data from a states resolve function

我正在使用AngularJS模塊的ui-router並使用resolve屬性來獲取項目的ID。

在一個單獨的文件中,我具有狀態patents.patent的組件patent ,該組件具有返回id的功能。 我需要訪問控制器返回的id ,以便隨后可以收集與所選項目相關的正確數據。

如何從控制器訪問resolve函數返回的值?

var app = angular.module('myApp', ['ui.router', 'chart.js']);

app.config(['$stateProvider', function($stateProvider) {

    $stateProvider
    .state('patents', {
        url: '/patents',
        component: 'patents',
        resolve: {
            patents: function(patentsService) {
                return patentsService.fetchAllPatents();
            },
            graphs: function(patentsService) {
                return  patentsService.fetchGraphData();
            }

        }      
    })
    .state('patents.patent', {
        url: '/{patentId}',
        component: 'patent',
        resolve: {
            patent: function(patents, $stateParams) {
                return patents.find(function(patent){ 
                    return patent.id == $stateParams.patentId;
                })
            },
            graph: function(graphs, $stateParams) {
                return graphs.dataset.find(function(graph){
                    return graph.id == $stateParams.patentId; //NEED THIS VALUE
                })
            }
        }
    })

}]);

angular.module('myApp').component('patent', {
    bindings: { 
        patent: '=' ,
    },
    templateUrl: '../templates/patents/list/patent-item.htm',
    controller: function() {
        var vm = this;

        //WHERE I NEED TO ACCESS THE RETURNED VALUE

    }
});

正如Vivz指出的那樣,注入控制器應該可以,但是您需要確保防止出現縮小問題:

angular.module('myApp').component('patent', {
  bindings: { 
    patent: '=' ,
  },
  templateUrl: '../templates/patents/list/patent-item.htm',
  controller: ['graph', function(graph) {
    var vm = this;

    //WHERE I NEED TO ACCESS THE RETURNED VALUE

  }]
});

要訪問已解析的數據,您只需將它們定義為與控制器的綁定。 就像您已經完成patent 然后,您可以通過vm變量(或此變量)訪問它們。

angular.module('myApp').component('patent', {
    bindings: { 
        patent: '<' ,
        graph: '<'
    },
    templateUrl: '../templates/patents/list/patent-item.htm',
    controller: function() {
        var vm = this;

        vm.$onChanges = function(changeObj){
            if(changeObj.patent){
                console.log('I am your patent', vm.patent);
            }
            if(changeObj.patent){
                console.log('I am your graph', vm.graph);
            }
        }
    }
});

正如@rrd所建議的那樣,您應該保護您的控制器免受縮小的影響,不僅如此,您還應該保護您的resolve函數免受縮小的影響。

像這樣:

resolve: {
    patents: ['patentsService', function(patentsService) {
        return patentsService.fetchAllPatents();
    }],
    graphs: ['patentsService', function(patentsService) {
        return  patentsService.fetchGraphData();
    }]
} 

JS &amp; React 試圖<div>來自 function 但它聲明沒有從渲染返回</div><div id="text_translate"><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> export function Login() { window.addEventListener('load', function () { window.FB.getLoginStatus(function (response) { if (.response.authResponse) { console;log(response); return ( &lt;div id='flex flex-row justify-center pb-100 fb-root'&gt; &lt;button className='btn btn-round btn-lg'&gt;Login&lt;/button&gt; &lt;/div&gt; ). } else { console;log('UserLoggedIn'); return ( &lt;div id='flex flex-row justify-center pb-100 fb-root'&gt; &lt;button className='btn btn-round btn-lg'&gt;Logout&lt;/button&gt; &lt;/div&gt; ); } }); }); }</pre></div></div><p></p><p> 根據響應,我無法返回具有登錄或注銷的按鈕。 我正在使用 window 加載 function 以確保我的其他腳本首先運行。</p><p> 錯誤信息:</p><pre> "react-dom.development.js:14169 Uncaught Error: Login(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null."</pre></div>

[英]JS & React Trying to <div> from function but it states nothing was returned from render

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 訪問從JavaScript中的另一個函數返回的數據 從jQuery加載訪問返回的數據 從FB.api()訪問返回的數據 訪問從Web服務返回的JSON數據 NodeJS 函數沒有返回數據 從控制器訪問第二個函數的返回值 為什么從函數返回的promise解析為從.then返回的值 JS &amp; React 試圖<div>來自 function 但它聲明沒有從渲染返回</div><div id="text_translate"><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> export function Login() { window.addEventListener('load', function () { window.FB.getLoginStatus(function (response) { if (.response.authResponse) { console;log(response); return ( &lt;div id='flex flex-row justify-center pb-100 fb-root'&gt; &lt;button className='btn btn-round btn-lg'&gt;Login&lt;/button&gt; &lt;/div&gt; ). } else { console;log('UserLoggedIn'); return ( &lt;div id='flex flex-row justify-center pb-100 fb-root'&gt; &lt;button className='btn btn-round btn-lg'&gt;Logout&lt;/button&gt; &lt;/div&gt; ); } }); }); }</pre></div></div><p></p><p> 根據響應,我無法返回具有登錄或注銷的按鈕。 我正在使用 window 加載 function 以確保我的其他腳本首先運行。</p><p> 錯誤信息:</p><pre> "react-dom.development.js:14169 Uncaught Error: Login(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null."</pre></div> 從回調函數訪問數據 從JavaScript函數訪問返回值會導致HTML頁面重新加載
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM