角度コントローラでTypeScriptを使用し、スコープlike this oneでメソッドをアタッチする例をいくつか見てきました。TypeScriptとcontrollerAsを使用してコントローラにメソッドをアタッチ
ただし、controllerAs
を使用する方が良い方法です。
class exampleCtrl {
public publicArray = [1,2,3];
public somePublicMethod() {
window.console.log('ran function')
}
}
これは生成:次の活字体(それが正しく等他所コントローラとして登録されたと仮定して)考える
var exampleCtrl = (function() {
function exampleCtrl() {
this.publicArray = [1, 2, 3];
}
exampleCtrl.prototype.somePublicMethod = function() {
window.console.log('ran function');
};
return exampleCtrl;
}());
somePublicMethod
がプロトタイプに追加されたかに注意してくださいさらにpublicArray
がthis
に直接追加されます。
私が知る限り、プロトタイプに追加されたメソッドは、controllerAsを使用してDOMを介して利用することはできません。
例えば
<div ng-controller="exampleCtrl as vm">
{{vm}} <!-- No function is output just {"publicArray":[1,2,3]} -->
<div ng-click="vm.somePublicMethod">Click me</div> <!-- click event doesn't work -->
</div>
は、どのように私は今、DOM経由somePublicMethod
にアクセスすることができますか? 代わりに、ControllerAs構文を使用しているときに、TypeScript(ES6)クラスのパブリック関数をパブリックにアクセスできるようにするにはどうすればよいですか?
plunker私が見ていることを示す。
その他の見所:
私はあなたが誤ってそれを使用する場合、それはあなたに警告し、public
、private
とprotected
が実際にコードがtranspiled方法を変更しないでください知っています。
Oh whoops、孤立した例を作成すると単純なエラーが発生します。私はそれが事実だと思った。それが可能であることを知って価値がある。私はそこに私のアプリのどこかに問題があると思う。ありがとう。 –