今日はこの問題で頭を悩ませています。お願いします。以下のコードを見てください。第 2 レベルのコンポーネント スコープから onUpdate() メソッドを起動した後に Angular がこのエラーをスローする理由を説明できますか?
TypeError: 'in' 演算子を使用して '$ctrl' in 99 を検索することはできません
ありがとう!
angular.module('app', [ ]);
angular
.module('app')
.controller('appController',function($scope){
var $ctrl = this;
$ctrl.onUpdate = function(number){
$ctrl.number = number;
};
})
// Firstlevel
.component('firstLevel', {
bindings : {
onUpdate : '&'
},
controller: function($scope){
var $ctrl = this;
$ctrl.otherStuff = 'other-stuff';
},
template : `
<second-level data-on-update="$ctrl.onUpdate(number)"></second-level>
`
})
// second-level
.component('secondLevel', {
bindings : {
onUpdate : '&'
},
controller: function($scope){
var $ctrl = this;
$ctrl.save = function(newVal){
$ctrl.onUpdate({number:newVal})
};
},
template : `
<button ng-click="$ctrl.save(99)">Save 99</button>
`
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.js"></script>
<div ng-app="app" ng-controller="appController as $ctrl">
<div>
# from second level: {{$ctrl.number}}
</div>
<first-level
data-on-update="$ctrl.onUpdate(number)">
</first-level>
</div>