2017-03-16 96 views
0

时收到错误消息当我检查它,有没有错误,它返回什么的话,显然不运行:AngularJS代码不运行和检查

<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="styles/bootstrap.min.css"> 
<style> 
.message { 
    font-size: 1.3em; 
    font-weight: bold; 
} 
</style> 
<script src="angular.min.js"></script> 
</head> 

<body ng-app='LunchChecker'> 
    <div class="container" ng-controller='MyLunchCheckController'> 
     <h1>Lunch Checker</h1> 
     <div class="form-group"> 
      <input id="lunch-menu" type="text" placeholder="list comma separated dishes 
       you usually have for lunch" class="form-control" ng-model='MenuInput'> 
     </div> 
     <div class="form-group"> 
      <button class="btn btn-default" ng-click="checkInput()"> 
       Check If Too Much</button> 
     </div> 
     <div class="form-group message" {{checkInput()}}> 
      <!-- Your message can go here. --> 
     </div> 
    </div> 
    <script src="app.js"></script> 
</body> 

</html> 

下面是上述观点的app.js脚本代码的目的是返回要么msg1如果输入小于3菜单或msg2如果输入超过3:

(function() { 
    'use strict'; 

    angular.module('LunchChecker', []) 
     .controller('MyLunchCheckController', MyLunchCheckController); 

    MyLunchCheckController.$inject = ['$scope']; 

    function MyLunchCheckController($scope) { 
     $scope.MenuInput = [].slice; 
     $scope.values = new Array($scope.MenuInput.length); 
     $scope.msg1 = "Enjoy!"; 
     $scope.msg2 = "Too much!"; 

     //fucntion for the button to check the user input menu-list 

     $scope.checkInput = function() { 
      for (var i = 0; i < $scope.values; i++) { 

       if ($scope.values <= 3) { 
        return $scope.msg1; 
       } else { 
        return $scope.msg2; 
       } 
      } 
     }; 
    } 

})(); 
+0

:用于显示信息,你可以写什么样的?您正在初始化的值在文本框中写入任何内容之前完成。如果我理解这个错误,你能为此创造一个蹲点吗? –

+0

@ Vineet Agrawal这正是我想要的页面显示:如果用户在这个地方持有人键入“列表逗号分开的菜肴,你通常吃午饭”,他们的午餐名单少于或等于3我应该得到msg1其他msg2所以页面加载时没有任何内容被传递!当你说“你正在初始化的值是在文本框中写入任何内容之前完成的”。我有点困惑!请把我当作初学者,并从这个角度帮助谢谢。 –

+0

https://rexie18.github.io/AngularJs-mod1-solution/ –

回答

0

当我试图反映你的代码,我得到function slice() { [native code] } INSI去文本框。正如你已经初始化MenuInput的值为[] .slice。

因此改善和比较码

'use strict'; 

angular.module('LunchChecker', []) 
    .controller('MyLunchCheckController', ['$scope', function($scope) { 
    $scope.msg1 = "Enjoy!"; 
    $scope.msg2 = "Too much!"; 

    $scope.checkInput = function() { 
      if($scope.MenuInput.split(",").length <= 3) { 
       $scope.values = $scope.msg1; 
      } else{ 
       $scope.values = $scope.msg2; 
      } 
    }; 
    }]); 

它会根据你比较长在控制台打印信息。你如何从视图中通过的电流值到控制器

<div class="form-group message" {{checkInput()}}> 

<div class="form-group message"> {{values}}</div> 
+0

谢谢你让我试试 –

+0

thansk很多这就是我做的 'use strict'; angular.module('LunchChecker',[]) .controller('MyLunchCheckController',MyLunchCheckController); MyLunchCheckController。$ inject = ['$ scope']; 函数MyLunchCheckController($ scope){ $ scope.MenuInput = []; $ scope.msg1 =“享受!”; $ scope.msg2 =“太多了!”; $ scope.checkInput = function(){ if($ scope.MenuInput.split(“,”)。length <= 3)$ scope.values = $ scope.msg1; } else { $ scope.values = $ scope.msg2; –