我開始學習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
我不知道,如果角允許'()=>'符號。有沒有你使用過'()=>'的代碼,它能正常工作嗎? –
你試過用babel或webpack編譯你的代碼嗎?並非所有瀏覽器都支持ES6 –
箭頭函數具有隱式'this'綁定,這意味着箭頭函數內的this值的值與箭頭函數範圍內的this值相同被定義爲! - [來源](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) –