Ng-model 没有按预期工作?

Ng-model is not working as expected?

我有一个文本框连接到 angular js ng-model=sampleValue

现在,我的要求是每当我点击按钮时显示功能应该被执行并且文本框的值应该更改为 Harish。但这不是我得到的结果。请看看我在下面写的代码:

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

app.controller("mainController", [ "$scope", function($scope){
  $scope.show = function(){
    $scope.sampleValue = "Harish";
  }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body ng-app = "myApp">
<input ng-controller="mainController" type="text" ng-model="sampleValue"/>
<button ng-click="show()">Click Here</button>
</body>

提前谢谢你:)

将 ng-controller 移动到 body 标签:

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

app.controller("mainController", [ "$scope", function($scope){
  $scope.show = function(){
    $scope.sampleValue = "Harish";
  }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body ng-app = "myApp"  ng-controller="mainController">
<input type="text" ng-model="sampleValue"/>
<button ng-click="show()">Click Here</button>
</body>

目前您已经在输入元素上应用了 ng-controller,这意味着控制器范围仅限于 input DOM,因此 show 方法不会被调用.您应该将 ng-controller 移动到包装元素(这里是 body)。

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">  </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="mainController">

  <input type="text" ng-model="sampleValue" />
  <button ng-click="show()">Click Here</button>
</body>

Plunker

ng-controller 放入正文或某些父项 div。您正在 input type

中使用 ng-controller

试试这个

<!DOCTYPE html>
<html ng-app="myApp">

<head>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
 
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 <script type="text/javascript">

  angular.module('myApp',[])
  .controller('myCtrl', function myCtrl($scope,$filter) {


   $scope.showValue = function(){
    $scope.sampleValue = "Harish";
   }
  })



 </script>

</head>

<body ng-controller="myCtrl">
 <input type="text" ng-model="sampleValue"/>
 <button ng-click="showValue()">Click Here</button>
</body>

</html>

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

app.controller("mainController", [ "$scope", function($scope){
  $scope.show = function(){
    $scope.sampleValue = "Harish";
  }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body ng-app = "myApp" ng-controller="mainController">
<input  type="text" ng-model="sampleValue"/>
<button ng-click="show()">Click Here</button>
</body>

你的 ng-controller 在输入端

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <title>Ang</title>
</head>
<body>
<div ng-app="">
  <h1>Ng-show  ng-hide</h1>
  <p class="description">Click on the "show"-link to see the content.</p>
  <a href="" ng-click="showme=true">Show</a>
  <button ng-click="showme=false">Hide</button> 

  <div class="wrapper">
    <p ng-hide="showme">It will appear here!</p>
    <h2 ng-show="showme">This is mah content, yo!</h2>
  </div>

</div>    

</body>
</html>

尝试执行上面的代码,您可能会对您的代码有所了解。

您的控制器范围仅限于输入文本框。

   <body ng-app = "myApp">
      <div ng-controller="mainController">
      <input  type="text" ng-model="sampleValue"/>
      <button ng-click="show()">Click Here</button>
      </div>
   </body>

事实是您在输入标签上使用了 ng-controller。所以在控制器功能内的输入标签之外将不起作用。你的js完全没问题。你只需要更改 html

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <body ng-app = "myApp" >
    <input  type="text" ng-model="sampleValue"/>
    <button ng-click="show()">Click Here</button>
    </body>