javascript - Angular 1.6 组件绑定(bind)返回未定义

标签 javascript angularjs

我已经设置了一个示例,我希望将 ID 传递给我的组件。据我了解,使用双向数据绑定(bind)我会像这样调用组件

模板文件:

<div ng-controller="searchCtrl as vm">
    <search-condition id="vm.id"></search-condition>
</div>

在定义 Controller 时,我指定希望通过 vm.id 在组件之间进行双向绑定(bind),如下所示。

comp.component('searchCondition', {
    templateUrl: 'Core/Views/search-condition.html',
    bindings: {
        id: '='
    }
});
comp.controller('searchConditionCtrl',function($scope){
    var vm = this;
    this.$onInit = function() {
        console.log(vm.id);
    };
});

当尝试输出 vm.id 的值时,我收到的都是“未定义”。此外,当我尝试通过 {{vm.id}} 输出值时,没有输出任何数据,这表明数据永远不会到达组件中。

最佳答案

当您通过 props 传递值时,变量会更改为 prop 名称。

示例

使用

<search-condition prop="data"></search-condition>

在搜索条件中

<div>{{prop}}</div>

这将显示数据值,因为数据被分配给 prop

现在您需要了解一件有关 Angular 的事情。对于组件,Angular 1 默认使用 $ctrl 来指定controllerAs 值,因此如果 SearchCondition 是一个组件而不是指令 prop,则为 {{$ctrl.prop}}

在您的情况下尝试{{$ctrl.id}},它应该显示在搜索条件的模板中

如果您想更改controllerAs的默认值,只需在创建组件时定义它即可。

.component('myCoolComponent', {
  controllerAs: 'vm',
  bindings: { ... }
})

如果像这样定义 {{vm.id}} 就可以了。

我建议您查看文档,了解定义组件时拥有的所有选项以及默认值。 https://docs.angularjs.org/guide/component

关于javascript - Angular 1.6 组件绑定(bind)返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51406381/

相关文章:

javascript - 调试 Karma 单元测试

javascript - 使用 var(非条件)的 JSON 查找数据的查询语法

javascript - Bresenham 同心圆留下空像素

javascript - 在 Javascript 骰子游戏中为骰子分配数字

javascript - x 可编辑行内的可编辑 list

javascript - 元素在体内找不到足够的空间 - JavaScript 样式

angularjs - 在 datepicker-popup 中禁用过去的日期

angularjs - Gulp ngmin + uglify 无法正常工作

javascript - 将表情符号作为短信中的文本发送

angularjs - 如何扩展 $asArray 返回的列表中的返回对象?