私の見解では、レンダリングしたい:
_<p>
{{ say() }}
</p>
_
say
は次のように定義されます:
_say = function() {
return "Hello World";
}
_
コントローラーで定義できます:
_function TestCtrl($scope) {
$scope.say = function() { ... };
}
_
ただし、そのコントローラー内でのみアクセス可能です。
Angularファイル構造の外側で関数を定義する場合、何もレンダリングしません。_controllers.js
_ファイルで定義する場合と同じですが、コントローラー関数スコープの外側です。
関数を配置する適切な場所はどこにあるので、どのコントローラーでもレンダリングできますか?
1つの方法は、複数のコントローラー間で共有したい機能を使用して サービスを作成 することです。詳細については この投稿 をご覧ください。
その後、作成したサービスを任意のコントローラーに挿入し、次のようなコードでsay()
関数にアクセスできます。
function TestCtrl($scope, myService){
$scope.say = myService.say;
}
myService
を次のように定義した場所:
angular.module('myApp', [])
.factory('myService', function () {
return {
say: function () {
return "Hello World";
}
}
});
jsFiddle と例を示します。