从AngularJS中的控制器范围外部访问模型数据

时间:2013-08-01 17:56:35

标签: javascript angularjs

这是我的HTML,它包含了所有内容,从HTML本身到脚本:

<!doctype html>
<html lang="en-US" ng-app>
    <!--Head-->
    <head>
        <meta charset="UTF-8">
        <title>Lesson 5 - ng-show & ng-hide</title>
        <meta name="viewport" content="width=device-width">
        <style type="text/css">
            * {
                box-sizing: border-box;
            }
            body {
                font: 16px/1.5 sans-serif;
                color: #222;
                margin: 5em;
            }
        </style>
    </head>
    <!--Body-->
    <body ng-controller="information">

        <div>
            <label for="name">
                Name:
                <input type="text" name="username" id="username" placeholder="Your name here please" ng-model="name"/>
            </label>
            <br>
            <label>
                Hide?
                <input type="checkbox" ng-model="checked"/>
            </label>
        </div>

        <div ng-hide="checked">
            Hidden Message here
            <br>
            Welcome {{ name || "user" }}!
        </div>


        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
        <script type="text/javascript">
            var information = function ($scope) {
                console.log($scope);
            }
        </script>
    </body>
</html>

如您所见,这是一个使用AngularJS的简单HTML页面。您可以看到正文由名为information的控制器控制。

现在,一旦你从body标签中删除信息,然后将其放入第一个div标记(就像ng-controller="information"到div标签而不是body标签),将看到程序停止工作(如果你输入你的名字,它将不会出现),这是预期的,因为另一个div超出了控制器的范围。

现在,我想问的是,您如何从HTML内部的另一个控制器访问数据?我尝试了以下内容:

  • {{ information.name || "user" }}&lt; - 首次尝试
  • {{ information.$scope.name || user }}&lt; - 第二次尝试,因为{{}}评估JS

最后,我无法得到我想要的结果。那么,我如何从另一个范围访问独立于任何范围的div标记?

1 个答案:

答案 0 :(得分:0)

做一件事。

创建一个具有getter setter属性的服务。如果要从控制器发送数据,请设置消息或变量或对象。并在要访问它的控制器中使用get函数。这样,您可以轻松地通过控制器传递数据。如果你仍然不能让我知道。