2016-04-05 19 views
0

私はComponent Routerでバインドするのに苦労しています。コンポーネントルータのバインディング - 角度1.5

開発者ガイドでは、コンポーネントで$ scopeを使用しないでください。したがって、オブジェクトはバインディングを通過する必要があります。

の例に基づいて:

HTML::

<div ng-app="app" ng-controller="MainCtrl as ctrl"> 
    {{ ctrl.hero.name }} 
    <app></app> 
</div> 

Javascriptを: https://docs.angularjs.org/guide/componenthttps://docs.angularjs.org/guide/component-router私が思い付いた

'use strict'; 

var app = angular.module('app', [ 
    'ngComponentRouter', 
    'testComponent', 
]) 

.config(function($locationProvider) { 
    $locationProvider.html5Mode(true); 
}) 

.value('$routerRootComponent', 'app') 

.controller('MainCtrl', function(){ 
    this.hero = { 
     name: 'Spawn' 
    }; 
}) 

.component('app', { 
    template: '<ng-outlet></ng-outlet>', 
    $routeConfig: [ 
     {path: '/test', name: 'Test', component: 'testComponent'}, 
    ], 
}) 

var testComponent = angular.module('testComponent', []); 

testComponent.component('testComponent', { 
    template: '<span>Name: {{$ctrl.hero.name}}</span>', 
    controller: TestComponentController, 
    bindings: { 
     hero: '=', 
    } 
}); 

function TestComponentController() { 
} 

しかし、 "スポーン" を<span>Name: {{$ctrl.hero.name}}</span>表示されませんか何でも

答えて

1

ルータコンポーネントで「バインディング」定義を使用することはできません。これは、コンポーネントが制御するHTMLを使用しないためです。

ルーティングコンポーネントにデータを渡す必要がある場合は、$ routerOnActivateコールバックのルーティングパラメータにアクセスします。

https://docs.angularjs.org/guide/component-router

サンプル・コードここに始めるために:https://github.com/brandonroberts/angularjs-component-router/

+0

説明をいただきありがとうございます – srokatonie

-1

あなたはまだこれを必要とする場合は、HTML enter <div ng-app="app" ng-controller="MainCtrl as ctrl"> {{ ctrl.hero.name }} <app hero="ctrl.hero.name"></app> </div> する必要がありますし、あなたの私が思うの結合が bindings: { hero: '<' }

+0

それは働いていない、Codepen参照:あなたは '<持っていないため、ええhttp://codepen.io/srokatonie/pen/wGjRRm – srokatonie

+0

をapp hero = "ctrl.hero.name"> '代わりに' 'があり、私の経験から、' ng-outlet'は '$$ router'としかバインドできません。そのようなhtml attrを通してバインディングの値を渡す必要があります。あなたが '

をし、HTMLはその後、次のようになります。

<div ng-app="app" ng-controller="MainCtrl as ctrl"> 
    <app hero="ctrl.hero"></app> 
</div> 

は作業を参照してください。コード:http://codepen.io/bchazalet/pen/qZYzXM?editors=1111

(あなたの場合は、testComponentからappへの依存関係が導入されていますが、それはうまくいくが、それはうまくいかない。

+0

こんにちは@Borisを持っているので、私は主なコンポーネントからアプリケーションコンポーネントを分離することをお勧めします、これはどちらも動作していません... http://codepen.io/srokatonie/pen/jqxXgX – srokatonie

+0

あなたのcodepen(私は私の応答を一方で更新します):http://codepen.io/bchazalet/pen/qZyzXM?editors=1111 – Boris

+0

@srokatonieこれはあなたのために今働いていますか? – Boris

関連する問題