【发布时间】:2015-02-21 10:20:46
【问题描述】:
当从 Mean.js 提供 Angular 1.3 时,angular 似乎评估简单的大括号表达式,但它们无法访问当前范围内的变量。例如,在下面的代码中,简单的 sum 计算正确,ng-bind 计算正确,但尝试访问变量的花括号表达式没有
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js"></script>
</head>
<body ng-app ng-init="firstName = 'John'; lastName = 'Doe';">
<strong>Simple sum:</strong> 2+2={{2+2}}<br />
<strong>First name:</strong> {{firstName}}<br />
<strong>Last name:</strong> <span ng-bind="lastName"></span>
</body>
</html>
这会导致:
简单和:2+2=4
名字:
姓氏:Doe
即 {{2+2}} 已评估但 {{firstName}} 未评估
同样,虽然我可以在指令中访问控制器,但我似乎无法从大括号表达式中访问控制器。即
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="personController">
First Name:
<input type="text" ng-model="firstName"><br>
Last Name:
<input type="text" ng-model="lastName"><br>
<br>
Full Name: {{firstName +" "+ lastName}}
</div>
</body>
<script type="text/javascript">
var app = angular.module("myApp",[]);
app.controller('personController', function($scope,$http){
$scope.firstName = "David";
$scope.lastName = "Silva";
})
</script>
</html>
结果
名字:大卫
姓:席尔瓦
全名:
即{{firstName +" "+ lastName}} 不会被评估,即使在同一范围内绑定到正确的变量
编辑
使用 jsfiddle 无法复制此问题,并且与服务器(Mean.js)有关。我通过 playframework 提供完全相同的 html 页面和 JS 文件来确认这一点,没有任何问题。所以现在的问题是“mean.js 在做什么以上述方式破坏角度”
【问题讨论】:
-
创建一个 plunker 或小提琴我没有发现你的代码有什么问题。
-
似乎在 plunker plnkr.co/edit/6XpoUegBfydM3HaCqoys?p=preview 中工作,通过 MEAN.js 提供服务,因此可能与缩小器或其他东西有关。
-
那么,您自己的程序中的控制台是否有任何错误?
-
控制台没有错误
-
所以你的代码的其他地方一定有问题