私はプロジェクトで新しく小さな機能を追加しようとしています。コントローラとコンポーネント間の角度分けデータ
Iは2つのビュー、Cars.html
とWheels.html
Cars.htmlがコントローラCars.controller.js
Wheels.html私はこれら二つのコントローラ間で通信するコンポーネントWheels.component.js
を有するを有するを有します。私はそれらをお互いに直接注入しようとしましたが、それはたくさんの「プロバイダエラー」を引き起こします。研究を通じて
オンライン、私が私のコントローラとコンポーネントによって注入されます「サービス」を必要とするように...そして、私は関数は、2つの間で通話を行うことができそうです。これを行うとプロバイダのエラーは解決されますが、howDoIgetHere
機能にアクセスできないようです。ここで
は、彼らがどのように見えるかです:
Cars.controller.js
angular.module('Cars')
.controller('CarsCtrl', CarsCtrl);
CarsCtrl.$inject = ['PartsViewModel'];
function CarsCtrl(PartsViewModel) {
var ctrl = this;
// This will fail
ctrl.goToParts = PartsViewModel.howDoIgetHere();
};
Wheels.component.js
angular.module('Cars')
.component('wheels', {
bindings: { wheel: '=' },
controller: 'WheelsCtrl',
templateUrl: 'path/to/component/Cars/Wheels/Wheels.component.html'
})
.controller('WheelsCtrl', WheelsCtrl);
WheelsCtrl.$inject = [];
function WheelsCtrl() {
var ctrl = this;
// This will fail
ctrl.goToParts = PartsViewModel.howDoIgetHere();
}
PartsViewModel.service.js
angular.module('Cars')
.factory('PartsViewModel', partsViewModelFactory);
partsViewModelFactory.$inject = ['Some', 'injected', 'Dependencies'];
function partsViewModelFactory(Some, injected, Dependencies) {
return PartsViewModel;
function PartsViewModel(part) {
this.howDoIgetHere = function() {
console.log('Success! From Cars controller or Wheels component.')
};
}
}
Cars.html
<div>
<button ng-click="ctrl.goToParts()"></button>
</div>
Wheels.html
<div>
<button ng-click="$ctrl.goToParts()"></button>
</div>
'ctrl'は私のコントローラの' this'への参照ですので、問題はありません。 'howDoIgetHere()'の後にかっこを削除しても何もしません。それを保持すると、私に「PartsViewModel.howDoIgetHere()は関数ではありません」というエラーが表示されます。 – bruh
私はそれを理解しました。どちらにも違いはありません。そして、かっこを残しておくと、ctrl.goToPartsに関数の戻り値が設定されます。 – charliebeckwith
ああ、面白いです。だから私は実際にかっこを削除する必要がありますか?その場合は、かっこなしで関数をどのように呼び出すのですか? – bruh