角度控制器变量在之后设定时会变化吗?

时间:2015-07-17 04:08:46

标签: javascript angularjs

var jem = 55;

var app = angular.module("store",[]);
app.controller("storeController",function(){
  this.product = jem;
});


jem = 0;
<!DOCTYPE html>
<html ng-app="store">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body ng-controller="storeController as store">
  <p>{{"HI"}}</p>
  <p>{{store.product}} </p>

</body>
</html>

为什么此输出为“0”而不是“55”?由于jem是一个基本的javascript变量,当产品被分配了jem时,它的值被复制了,当jem被更改时不应该改变吗?

1 个答案:

答案 0 :(得分:3)

请注意,您的控制器定义位于回调函数内(因为它应该是......)

app.controller("storeController", function(){
  this.product = jem;
});

与您的问题相关的副作用是,回调中的赋值语句this.product = jem将在回调之后的赋值语句jem = 0之后执行。

需要注意的是,回调不会与其余代码顺序进行。