【问题标题】:Angular JS scope issue module not reading controller scopeAngular JS范围问题模块未读取控制器范围
【发布时间】:2014-04-03 00:59:01
【问题描述】:

我创建了一个使用 Angular 1.0.8 的项目。我创建了项目,正确设置了我的路由和我的控制器,当我尝试访问路由中的 $scope 时,它​​给了我一个问题,我必须去访问我使用 $scope.$$ 设置的范围变量prevSibling[variables] 我是不是设置错了??我创建了一个具有相同结构的类似项目,它工作正常我可以直接使用我的模块访问 $scope 吗?

function AppCtrl($scope) {
$scope.navigation = [

 { name: "main", route: "#/" },
 { name: "edit", route: "#/edit" },
 { name: "save", route: "#/save" },
 { name: "settings", route: "#/settings" }

];

$scope.currentPage = null;

$scope.setCurrentPage = function (index) {

    $scope.currentPage = $scope.navigation[index];

}

angular.forEach($scope.navigation, function (value, key) {

    $scope[value.name + "Active"] = "";

})

$scope.setActive = function (name) {

    angular.forEach($scope.navigation, function (value, key) {

        $scope[value.name + "Active"] = "";

    })

    $scope[name + "Active"] = "active";

}

} 

这是我的模块设置:

angular.module('Sample', [])
       .config(appRouter);

function appRouter($routeProvider) {

    $routeProvider.when("/", {
        templateUrl: "partials/default.html",
        controller: function ($scope) {

            console.log($scope.$$prevSibling.setActive);

        }
    })
 }

<!DOCTYPE html>
<html ng-app="Sample">
<head>
   <title>Sample Angular App</title>
   <script src="Scripts/lib/basket.js"></script>
   <link rel="stylesheet" href="css/global.css"/>
   <link rel="stylesheet" href="css/style.css" />
   <script src="Scripts/lib/angular.min.js"></script>
   <script src="Scripts/controllers/app.js"></script>
   <script src="Scripts/app.js"></script>
</head>
<body>
   <div class="wrapper" ng-controller="AppCtrl">
       <div class="navigation">
          <ul class="cf">
             <li ng-repeat="link in navigation" ng-class="{active:$index == activeIndex}" class="{{link.name}}"><a class="icon-{{link.icon}}" href="{{link.route}}"> {{link.name | uppercase}} </a></li>
          </ul>
       </div>
       <div class="viewWrapper">
           <div class="sidebarParent">
              <div ng-include src="sidebarUrl" class="sidebar">

              </div>
           </div>
           <div class="viewParent">
               <div ng-view class="view">

                </div>
            </div>
          </div>
        </div>
      </body>
   </html>

style.css 用于我的图标字体,global.css 用于我的主要样式,basketjs 用于在本地存储一些脚本,以便我以后可以使用easeljs,ng-repeat 用于构建导航。一切正常,但只是范围关闭了?我必须去prevSibling? controllers/app.js 是 AppCtrl 所在的位置,Scripts/app.js 是我的模块所在的位置。

【问题讨论】:

  • 你在哪里使用AppCtrl?我们可以看到partials/default.html 的 HTML 代码吗?
  • 我有一个 index html 文件,并且模块和控制器都是从同一个索引页面调用的。
  • partials 正在工作,ajax 请求正在正确加载这些页面,如果我为它创建一个 jsbin 可能会更好。但我不确定问题是否会被复制。

标签: javascript angularjs


【解决方案1】:

在研究了更多关于 Angular 的知识后,我意识到 $$prevSibling 会上升到元素的作用域链,所以如果你没有要进入下一个作用域级别的元素,那么你将收到一个 null对象,因为那里什么都没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2016-03-23
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多