2016-06-11 129 views
0

我開始學習AngularJS,但我偶然發現了一個奇怪的行爲,我不明白(()=> {})表示法與(function(){})的等價位置。奇怪的AngularJS初學者行爲

我的index.html:

<!DOCTYPE html> 
<html ng-app="gemStore"> 
    <head> 
    <title>AngularJS Store</title> 
    <script src="./angular.min.js"></script> 
    <script src="./app.js"></script> 
    </head> 
    <body> 
    <div ng-controller="StoreController as store"> 
     <h1>{{store.product.name}}</h1> 
     <h2>${{store.product.price}}</h2> 
     <p>{{store.product.description}}</p> 
    </div> 
    </body> 
</html> 

我app.js(關閉剝離用於調試)。

var app = angular.module('gemStore', []); 

app.controller("StoreController", function() { 
    this.product = gem; 
}); 

var gem = { 
    name: 'Dodecahedron', 
    price: 2.95, 
    description: '. . .' 
};  

在app.js,如果我改變

app.controller("StoreController", function() { 
    this.product = gem; 
}); 

app.controller("StoreController",() => { 
    this.product = gem; 
}); 

我的頁面不再顯示創業板信息(只是空白和美元符號保留)。

有人可以解釋爲什麼會發生這種情況?

AngularJS版本:v1.5.6
歌劇版本:37.0.2178.54

+0

我不知道,如果角允許'()=>'符號。有沒有你使用過'()=>'的代碼,它能正常工作嗎? –

+0

你試過用babel或webpack編譯你的代碼嗎?並非所有瀏覽器都支持ES6 –

+1

箭頭函數具有隱式'this'綁定,這意味着箭頭函數內的this值的值與箭頭函數範圍內的this值相同被定義爲! - [來源](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) –

回答