所以在我使用控制器执行某项功能之前,我的绑定工作正常。我可以执行$ 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);
}
})
&#13;
<span ng-repeat="stars in entries track by $index ">
*
</span>
&#13;
<tr ng-repeat="m in data">
<td>{{m.title}}</td>
<td>{{m.length}}</td>
<td>
<rating-Component value= "m.rating" ></rating-Component>
</td>
<td>
&#13;
所以在我插入自己的控制器之前,我测试是否通过执行$ ctrl.value来获取值,并且它可以工作(来自本地JSON文件的JSON数据)。我正在使用控制器显示即将到来的数字(数组中的简单数字)以匹配*符号,因此它看起来像评级。我正在添加其他代码,它可能有助于查看我正在尝试做什么,但我相信我的控制器问题。 enter image description here
答案 0 :(得分:2)
下面提到了几个错误。
$scope
语法时,请勿在范围内混合使用controllerAs
。您在这里使用的是组件,因此不应考虑使用$scope
bindings
的{{1}}将在控制器上下文中可用。所以尽管value
使用vm.value
。 $scope.value
生命周期挂钩。$onInit
代替vm.entries
。<强>控制器强>
entries
答案 1 :(得分:0)
我认为你忘了把vm
放在范围对象之前。
所以在模板中试试这个。
ng-repeat="stars in vm.entries track by $index "