Angular 1.5 Component Bindings与控制器不工作

时间:2017-04-30 08:41:28

标签: javascript angularjs angular2-components angular-components

所以在我使用控制器执行某项功能之前,我的绑定工作正常。我可以执行$ 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;
&#13;
&#13;

&#13;
&#13;
<span ng-repeat="stars in entries track by $index ">

*
</span>
&#13;
&#13;
&#13;

&#13;
&#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;
&#13;
&#13;

所以在我插入自己的控制器之前,我测试是否通过执行$ ctrl.value来获取值,并且它可以工作(来自本地JSON文件的JSON数据)。我正在使用控制器显示即将到来的数字(数组中的简单数字)以匹配*符号,因此它看起来像评级。我正在添加其他代码,它可能有助于查看我正在尝试做什么,但我相信我的控制器问题。 enter image description here

2 个答案:

答案 0 :(得分:2)

下面提到了几个错误。

  1. 当您使用$scope语法时,请勿在范围内混合使用controllerAs。您在这里使用的是组件,因此不应考虑使用$scope
  2. bindings的{​​{1}}将在控制器上下文中可用。所以尽管value使用vm.value
  3. 在组件启动时分配值时使用$scope.value生命周期挂钩。
  4. 现在使用$onInit代替vm.entries
  5. <强>控制器

    entries

答案 1 :(得分:0)

我认为你忘了把vm放在范围对象之前。 所以在模板中试试这个。

ng-repeat="stars in vm.entries track by $index "