ng-controller无法正确输出

时间:2016-06-16 11:49:24

标签: javascript html angularjs

我尝试运行以下简单的HTML:

  <!DOCTYPE html>
  <html ng-app="tempApp">
<head>
    <script src="js_libs/angular/angular.min.js"></script>
    <script src="js_libs/angular/bootstrap.js"></script>
    <script src="controller.js"></script>
    <link rel="stylesheet" href="css/bootstrap.css">
</head>
<body ng-controller="TempCtrl">
    <div class="container">
        <h2>Enter temperature :</h2><input type="number" ng-model="temp">
        <p ng-show="temp < 17">{{temp}} is too short !</p>
        <p ng-show="temp = 17">{{temp}} is OK !</p>
        <p ng-show="temp > 17">{{temp}} is too high !</p>
    </div>
</body>

文件controller.js是:

  var app=angular.module("tempApp", []);

 app.controller("TempCtrl", function ($scope){
     $scope.temp = 17;
 });

问题是:

  1. 输出显示输入框,其中17为默认值,消息 17为ok 。我无法通过单击箭头或输入直接数据来更改输入框中的值。
  2. 同时,尝试应用&lt;等标签。 h1&gt;到&lt; p>没有效果。我试过例如:

         <p ng-show="temp < 17"><h1>{{temp}} is too short !</h1></p>
    
  3. 这些问题的解决方案是什么?感谢名单。

3 个答案:

答案 0 :(得分:4)

您在ng-show中分配了值17。比较值应该是通过==或===。这应该可以解决你的大多数问题。

<p ng-show="temp === 17">{{temp}} is OK !</p>

答案 1 :(得分:1)

关于第一个问题:

使用Ytemp == 17进行比较,而不是temp === 17,它将17分配给temp,因此您无法再更改该值。

关于temp = 17内的h1

它是无效的HTML,因此当浏览器在p内遇到h1时,会关闭p标记,然后启动新的p标记,因此在您的如果你写的话

h1

然后浏览器将其呈现为

<p ng-show="temp < 17">
    <h1> too short </h1>
</p>

P.S:不能说所有的浏览器,但chrome和Firefox可能会有这种行为。

答案 2 :(得分:0)

您正在使用分配运算符而不是比较运算符

解决方案:

<p ng-show="temp = 17">{{temp}} is OK !</p>

更改为=&gt;

<p ng-show="temp === 17">{{temp}} is OK !</p>