,因此我的绑定在下面工作直到我使用控制器执行某个功能之前。我可以做$ ctrl.value,并且数据的值在视图上显示。
当我尝试实现控制器时,该值将变得不确定。为什么会发生这种情况?
当前组件:
module.component('ratingComponent',{
templateUrl:'jay-movies/movie-rating.component.html',
bindings: {
value:"<"
},
controllerAs:'vm',
controller: ($scope)=>{
let vm = this;
$scope.entries = new Array($scope.value);
console.log($scope.entries);
}
})
<span ng-repeat="stars in entries track by $index ">
*
</span>
<tr ng-repeat="m in data">
<td>{{m.title}}</td>
<td>{{m.length}}</td>
<td>
<rating-Component value= "m.rating" ></rating-Component>
</td>
<td>
因此,在插入自己的控制器之前,我要测试是否通过执行$ ctrl.value来获取该值,并且它可以工作(来自本地JSON文件的JSON数据(。我正在使用控制器显示即将到来的数字(数组中的简单数字(以匹配 *符号,因此看起来像是评分。我正在添加其他代码,这可能有助于查看我要做的事情,但是我认为问题是我的控制器。在此处输入图像描述
您有下面提到的几个错误。
- 使用
controllerAs
语法时,请勿将$scope
混合在范围内。在这里,您正在使用组件,因此您不应考虑使用$scope
-
bindings
的value
将在控制器上下文中可用。因此,如果$scope.value
,则使用vm.value
。 - 在组件启动上分配值时,请使用
$onInit
Lifecylce Hook。 - 现在使用
vm.entries
,而不是entries
。
控制器
controller: ()=>{
let vm = this;
$onInit(){
vm.entries = new Array(vm.value);
onsole.log(vm.entries);
}
}
我认为您忘记了范围对象之前的 vm
。因此,在模板中尝试一下。
ng-repeat="stars in vm.entries track by $index "