gpt4 book ai didi

angularjs - 使用 ES6 测试 Angular 1.x 组件不会使用 $componentController 加载绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 20:51:38 24 4
gpt4 key购买 nike

我有以下代码

我的组件

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)
})
})

我希望 Controller 中构造器上的 console.log 打印 PaginationController {page: 1, data: [], size: 10} 但我得到 PaginationController {page: 1 },所以我假设绑定(bind)不起作用。

任何人都可以帮助我理解为什么?

最佳答案

最后,这项工作像这样显式地执行 .contructor():

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

这里的问题是 .constructor 方法被调用了两次:第一次是当 $componentController 被执行时,此时,绑定(bind)在构造函数方法中不可用,但是如果我执行 controller.constructor() 绑定(bind)可用。所以,我仍然不明白为什么。

关于angularjs - 使用 ES6 测试 Angular 1.x 组件不会使用 $componentController 加载绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44266265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com