「Coffee Script Class」と Angular JS 構造を使用する良い方法になると思われる何かをしたいと考えています。
<!doctype html>
<html ng-app>
<head>
<meta charset=utf-8>
<meta name=viewport content="width=device-width, initial-scale=1">
<title>Main Test</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript" src="js/coffee.js"></script>
</head>
<body>
<div ng-controller="MainClass" style="margin-left:10px">
<h2>All todos: {{test()}}</h2>
</div>
</body>
</html>
DIV ng-controller を MainClass としてセットアップし、H2 HTML タグ内で test() メソッドをバインドしていることに注意してください。
class AngularJSController
constructor: ($scope, $main) ->
$scope.test = MainClass.prototype.test
MainClass.test = MainClass.prototype.test
$main.test = MainClass.prototype.test
test = MainClass.prototype.test
@test = MainClass.prototype.test
console.log @test
class MainClass extends AngularJSController
constructor: ($scope) ->
super $scope, this
setTimeout (->
console.log test()
), 1000
test();
test: -> 'aloha!'
AngularJSController コンストラクターで、スーパー クラス メソッド TEST を MainClass スコープにセットアップするために想像したすべてのフォームを試しましたが、成功しませんでした。
Angular JSコントローラーとコンポーネントだけでクラスを操作したいので、それをやろうとしています。
私がすでに陥った問題:
@test()
setTimeout 内の代わりに使用しようとするとtest()
、jQuery はすでにthis
プロパティを一種の JQuery ウィンドウ オブジェクトに置き換えています。setTimeout (-> console.log @test()), 1000
test()
場所 this (または @ cause Coffee) が場所と同じでない場合、呼び出しの範囲が実際に何であるかはわかりません。test() != this.test() != @.test() # the first scope isn't the same scope of last two calls