【问题标题】:$scope issue in angular$scope 角度问题
【发布时间】:2016-08-10 00:31:52
【问题描述】:

我已经看到很多关于这个问题的问题,但我不明白给出的答案。我看到了几个模块和控制器的例子,但是当我尝试它时,它不起作用。

我从一个网站复制了代码以检查它是否对我有用,但仍然无法正常工作。

这是代码:

var myapp = angular.module("myapp", []);
myapp.controller("HelloCtrl", function($scope) {
  $scope.user = {
    name: "name123",
    nickName: "nickName123",

    callMe: function() {
      var userObject = $scope.user;
      return userObject.name + " Known as " + userObject.nickName;
    }
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
  <div ng-controller="HelloCtrl">
    <!--הטופס-->
    First Name:
    <input type="text" ng-model="user.name" />
    <br />Last Name:
    <input type="text" ng-model="user.nickName" />
    <br />

  </div>
</div>
{{user.callMe()}}

当我调试代码时,这是我得到的:

【问题讨论】:

  • 你是否真的在 HTML 的任何地方包含了 Angular JS?
  • 请检查浏览器控制台中的错误

标签: javascript html angularjs angularjs-scope


【解决方案1】:

{{user.callMe()}} 应该被包装到相应的控制器中。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>
<div ng-app="myapp">
  <div ng-controller="HelloCtrl">
    <!--הטופס-->
    First Name:
    <input type="text" ng-model="user.name" />
    <br />Last Name:
    <input type="text" ng-model="user.nickName" />
    <br />{{user.callMe()}}
  </div>
</div>

<script>
  var myapp = angular.module("myapp", []);
  myapp.controller("HelloCtrl", function($scope) {
    $scope.user = {
      name: "name123",
      nickName: "nickName123",

      callMe: function() {
        var userObject = $scope.user;
        return userObject.name + " Known as " + userObject.nickName;
      }
    };
  });
</script>

【讨论】:

    【解决方案2】:

    您的 Angular 插值在您的 Angular 应用程序之外;-)

    var myapp = angular.module("myapp", []);
    myapp.controller("HelloCtrl",function($scope){
        $scope.user = {
            name: "name123",
            nickName: "nickName123",
    
            callMe: function(){
              console.log('called');
            var userObject = $scope.user;
            return userObject.name + " Known as " + userObject.nickName;
          }
        };
    });
    
    angular.element(document).ready(function() {
        angular.bootstrap(document.querySelector('#app'), ['myapp']);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
    
    <div id="app" ng-controller="HelloCtrl">
            <!--הטופס-->
            First Name:<input type="text" ng-model="user.name" />
            <br />
            Last Name:<input type="text" ng-model="user.nickName" />
            <br />
    {{user.callMe()}}
    </div>

    【讨论】:

      【解决方案3】:

      您的插值应该在控制器 div 中并添加对 angular.js 的引用

      <div ng-app="myapp">
              <div ng-controller="HelloCtrl">
                  <!--הטופס-->
                  First Name:<input type="text" ng-model="user.name" />
                  <br />
                  Last Name:<input type="text" ng-model="user.nickName" />
                  <br />
                  {{user.callMe()}}
              </div>
          </div>
          <script src="Scripts/angular.min.js"></script>
          <script>
              var myapp = angular.module("myapp", []);
              myapp.controller("HelloCtrl", function ($scope) {
                  $scope.user = {
                      name: "name123",
                      nickName: "nickName123",
      
                      callMe: function () {
                          var userObject = $scope.user;
                          return userObject.name + " Known as " + userObject.nickName;
                      }
                  };
              });
          </script>
      

      【讨论】:

        猜你喜欢
        • 2019-03-03
        • 1970-01-01
        • 1970-01-01
        • 2016-07-29
        • 2018-08-27
        • 2015-03-16
        • 2014-03-24
        • 2016-01-15
        • 2016-08-01
        相关资源
        最近更新 更多