2017-05-30 29 views
1

I持って、次のコード

マイコンポーネント

class PaginationController{ 
    page = 1 

    constructor() { 
     console.log(this) // PaginationController {page: 1} 
    } 
} 
export const PaginationComponent = { 
    templateUrl: '/components/app/views/pagination.html', 
    controller: PaginationController, 
    controllerAs: '$ctrl', 
    bindings: { 
     data: '=', 
     size: '<', 
    } 
} 

テスト

import { PaginationComponent } from '../src/components/app/pagination' 

describe("Pagination Controller",() => { 

    let controller 

    beforeEach(() => { 
     angular 
      .module("Test", []) 
      .component('pagination', PaginationComponent) 
    }) 

    beforeEach(window.module("Test")) 

    beforeEach(inject(($componentController) => { 
     controller = $componentController('pagination', null, { 
      data: [], 
      size: 10 
     }) 
    })) 

    it("change page",() => { 
     console.log(controller) 
    }) 
}) 

Iコントローラー内のコンストラクターのconsole.logがPaginationController {page: 1, data: [], size: 10}を印刷すると思うが、私はを受け取る、私はバインディングが動作していないと仮定します。

なぜ誰かが私の理解を助けることができますか?

答えて

0

最後にexplicitilyこのような.contructor()実行この作品:

beforeEach(inject(($componentController) => { 
    controller = $componentController('pagination', null, { 
     data: [], 
     size: 10 
    }) 
    controller.constructor() 
})) 

問題はここ.constructor方法は、それが2回呼ばれていますということです: $componentControllerは、それが実行され、この時点でいたときに初めてです、バインディングはコンストラクタメソッドでは利用できませんが、もし私がcontroller.constructor()を実行するとバインディングは利用可能です。だから、なぜか分からない。

関連する問題