AngularJS表达式不起作用

时间:2015-09-29 12:58:53

标签: javascript html angularjs

我无法在AngularJS中显示表达式。下面是我的HTML代码。

[l[i:] for i,e in enumerate(reversed(l))]

这是<!DOCTYPE html> <html data-ng-app="appname"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> <script src="javascript.js"></script> </head> <body> <div data-ng-controller="appCtrl"> <p>{{appname.product.name}}</p> </div> </body> </html> 档案:

javascript.js

网页仍会显示:(function () { var appname = angular.module('appname', []); var gem = { name: "Ring", price: 2.9, Description: "", }; appname.controller('appCtrl', function () { this.product = gem; }); });

4 个答案:

答案 0 :(得分:1)

您需要在控制器和视图中包含范围

改变你的代码:

控制器:

var appname = angular.module('appname', []);
appname.controller('appCtrl', function($scope) 
{
  $scope.gem = {
        name:"Ring",
        price:2.9,
        Description:"",
        };
 });

HTML:

<html data-ng-app="appname">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="javascript.js"></script>
</head>
<body>
<div data-ng-controller="appCtrl">
<p>{{gem.name}}</p>
</div>
</body>
</html>

这是codepen链接: http://codepen.io/anon/pen/epgmGd

答案 1 :(得分:1)

你正在以错误的方式做很多事情。

如果您想关注&#39;这个&#39;使用&#39; as&#39; 语法(与范围相反)方法。

在你的标记中:

<div data-ng-controller="appCtrl as app">
    <p>{{app.product.name}}</p>
</div>

在您的控制器中:

this.product = {
        name:"Ring",
        price:2.9,
        Description:"",
        };

答案 2 :(得分:1)

有两种方法可以解决这个问题:

首先使用$scope方式:

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

appname.controller('appCtrl', function ($scope) {
    $scope.gem = {
        name: "Ring",
        price: 2.9,
        Description: "",
    };
});

现在将您的视图修改为:

<div data-ng-controller="appCtrl">
    <p>{{product.name}}</p>
</div>

您使用的另一种方式是this方式:

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

appname.controller(function() {
    this.gem = {
        name: "Ring",
        price: 2.9,
        Description: "",
    };
});

并将您的观点修改为:

<div data-ng-controller="appCtrl as main">
    <p>{{main.product.name}}</p>
</div>

另外,就像评论中提到的@ryanyuyu一样,你需要立即调用你的函数:像这样:

(function () {
    // Your code
})();    // Add () at last

答案 3 :(得分:0)

可能没有证件的案件。

在我的情况下,我有$window级变量,我在$scope级别声明的名称相同。

更改其工作的变量名称后。

奇怪,因为它确实在js代码中识别$scope级别变量,但是当它将值放入表达式时会让人感到困惑。

//Global JS variable
var currentLocationName = "Nice Location";

我正在$scope级复制这个全局变量。

$scope.currentLocationName = $window.currentLocationName;

并且正在HTML视图中的表达式中使用它。

<b>Your current location is {{ currentLocationName }}</b>

这不起作用。我更改了$scope级别的名称,但它确实有效。

我的两分钱!