从父级访问 Angular 1.x 组件属性

Posted

技术标签:

【中文标题】从父级访问 Angular 1.x 组件属性【英文标题】:Accessing angular 1.x component property from parent 【发布时间】:2019-01-16 14:25:00 【问题描述】:

我创建了一个 Angular 1.x 星级组件。需要有多个组件实例,因此需要有不同的评级值。

但是我想不出从组件中读取 starCount 变量的方法。我尝试浏览文档,尝试绑定属性但无济于事。

这只需要 Vue.js 中的 v-model 属性,但我找不到像这样的 Angular 属性。

var app = angular.module('app', []);
app.component('star',  
    template: `<ul class="star">
        <li class="fa" ng-class="$ctrl.starCount >= 1 ? 'fa-star' : 'fa-star-o'" ng-click="$ctrl.starCount=1" />
        <li class="fa" ng-class="$ctrl.starCount >= 2 ? 'fa-star' : 'fa-star-o'" ng-click="$ctrl.starCount=2" />
        <li class="fa" ng-class="$ctrl.starCount >= 3 ? 'fa-star' : 'fa-star-o'" ng-click="$ctrl.starCount=3" />
        <li class="fa" ng-class="$ctrl.starCount >= 4 ? 'fa-star' : 'fa-star-o'" ng-click="$ctrl.starCount=4" />
        <li class="fa" ng-class="$ctrl.starCount >= 5 ? 'fa-star' : 'fa-star-o'" ng-click="$ctrl.starCount=5" />
    </ul>`,
    controller: function () 
         this.starCount = 0;
    
);

完整代码和演示在这里: https://codepen.io/anon/pen/RBqYoM

【问题讨论】:

【参考方案1】:

您必须在配置中添加绑定才能将数据传递给组件:

controller: ...,
bindings: 
    starCount: '<'


// in your html
<star star-count="3"></star>

别忘了删除this.starCount = 0;

【讨论】:

如何从主应用访问它? 您可以在控制器中为您想要使用星形组件的模板使用变量,例如$scope.starCount = 5; 并写在html中&lt;star star-count="starCount"&gt;&lt;/star&gt; 你能展示一个演示吗?我试过这个codepen.io/anon/pen/RBqYoM 但它不起作用 它没有更新值 我使用两种方式绑定来修复它

以上是关于从父级访问 Angular 1.x 组件属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 6 中从父级 HTML 编辑共享组件

如何正确使用 Angular 中的 Observable 将数组数据从父级发送到子级?

从Angular 2中的子组件更新父组件属性

如何从父组件 OnSubmit Angular 4 触发对子组件的验证?

样式化组件——从父级访问道具

Vue 组件:如何将数据从父级传递给子级