2017-05-19 5 views
1

AngularJS 1.5とコンポーネントにパラメータを渡すangularjs。私は、UI-SREFディレクティブを使用して、コンポーネント内のパラメータを渡すにはどうすればよい
は1.5 UI-ルータおよびコンポーネントを使用して、UI-SREF

header.html:

<a ui-sref="dashboard({contentType: 'company'})">Company</a> 

app.js:

.state('dashboard', { 
     url: "/dashboard", 
     component: "dashboard", 
     resolve: { 
     } 
    }) 

ダッシュボード-component.js:

angular.module('myModule').component('dashboard', { 
    templateUrl: '/views/admin/dashboard.html', 
    controller: DashboardController, 
    binding: { 
     contentType: '<' // This is not working... 
    } 
}); 

dashboard.html:(ここでのcontentTypeを見ることを期待 - しかし、ノー...)

contentType: {{$ctrl.contentType}}

答えて

2

をURLのPARAM contentTypeを追加します。あなたはparamsを持つことができる2つの方法があります。ここでは簡単な説明です:URLの一部である

  1. のparams URLの一部ではない

    .state('dashboard', { 
        url: "/dashboard/:contentType", 
        component: "dashboard", 
        resolve: { 
        ... 
        } 
    }) 
    
  2. のparams

    .state('dashboard', { 
        url: "/dashboard", 
        params: {contentType: null}, 
        component: "dashboard", 
        resolve: { 
        ... 
        } 
    }) 
    

EDIT:あなたが表示された場合私がコメントで提供したプランナーでは、彼らは直接コントローラーのparam値ですが、何かを得るためにそれを使用していますresolve d。

今、あなたの問題の解決に来て、

一つの方法は、あなたがコントローラで$stateParamsを注入し、$stateParams.testerを使用することができます。

または、あなたが望むなら、あなたも同じように、直接渡された値を取得するためにresolveを使用することができます。

$stateProvider.state('userlist', { 
    url: '/users', 
    params: { 
     tester: null 
    }, 
    component: 'users', 
    resolve: { 
     tester: function($stateParams) { 
     return $stateParams.tester; 
     } 
    } 
    }); 

second example plunker

+0

おかげで、働いていなかったこと、まだ「のparams」について知っているが、didntは私のために。ダッシュボードのバインディング内:「『<』のcontentType」 1.私はまだ必要ですか? 2.ダッシュボードコンポーネントは、UIビューディレクティブの内側に配置された - ?私は

chenop

+0

@chenopのようなものは、ここで[例plunker](https://plnkr.co/edit/CgHJ7HSeFOu6dyGjv0QW?p=preview)を実証だ(それを指定する必要がありますかどのようにそれは 'UI-router'と' components'で動作します。それは良い、あなたが問題を解決するのに役立ちます場合。そうでなければ、あなたは私と一緒にあなたのコード、フォーク、および共有URLでそれを修正することができます助けるためにあなたの意欲に感謝 – tanmay

+0

。ここにあります問題発揮plunker: 'resolve'd @chenop説明 – chenop

1

あなたはそれがいくつかのparamsで呼び出すことができることをあなたの状態を伝えるために必要な状態で

.state('dashboard', { 
     url: "/dashboard/:contentType", 
     component: "dashboard", 
     resolve: { 
     } 
    }) 
関連する問題