gpt4 book ai didi

javascript - $scope 在我的导航栏 Controller 中不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:15 25 4
gpt4 key购买 nike

我的 Angular 应用程序是使用这个 yeoman generator 的样板开发的.

路由和所有工作正常,但我无法只在 navbar-controller.js 和 footer-controller.js 上工作 $scope。如果您需要更多信息来提供相关线索,请告诉我。

Index.html

<!DOCTYPE html>
<html lang='en' data-ng-app='app'>
<head>
<title>App</title>
<meta name='viewport' content='width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes'>
<!-- inject:head:js -->
<!-- endinject -->
<!-- inject:html -->
<!-- endinject -->
<!-- bower:css -->
<!-- endbower -->
<!-- inject:css -->
<!-- endinject -->
</head>
<body class="wrapper">

<div ng-controller="NavbarCtrl" ng-include="'navbar/navbar.tpl.html'"></div>

<!-- boxed-layout -->
<div class='container'>

<!--=== Main Content ===-->
<div data-ui-view></div>
<!--=== End Main Content ===-->

</div>

<!-- <div id="footer"
ng-controller="FooterCtrl" ng-include="'footer/footer.tpl.html'">
</div> -->

<!-- bower:js -->
<!-- endbower -->
<!-- inject:js -->
<!-- endinject -->
</body>
</html>

navbar-controller.js

(function () {
'use strict';

angular
.module('navbar')
.controller('NavbarCtrl', NavbarCtrl);

function NavbarCtrl() {
var vm = this;
vm.ctrlName = 'NavbarCtrl';

this.loginHeader = function(){
console.log("LOGIC called");
}
}
}());

navbar-module.js

(function () {
'use strict';
angular
.module('navbar', [
'ui.router'
]);
}());

navbar-routes.js

(function () {
'use strict';

angular
.module('navbar')
.config(config);

function config($stateProvider) {
$stateProvider
.state('navbar', {
url: '/navbar',
templateUrl: 'navbar/navbar.tpl.html',
controller: 'NavbarCtrl',
controllerAs: 'navbar'
});
}
}());

navbar-trl.html

....
.....
<li><a href="#">Separated link</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li ng-hide="navbar.isLoggedIn"><a ui-sref="login">Login {{navbar.ctrlName}}</a></li>
<li ng-hide="navbar.isLoggedIn" ><a ui-sref="register">Signup</a></li>
<li ng-show="navbar.isLoggedIn"><a>Logged as {{navbar.username}}</a></li>
<li ng-show="navbar.isLoggedIn"><a ui-sref="login">Logout</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
....
.....

更新:我找到了答案。谢谢大家。我想知道在其他 Controller 中我没有注入(inject) $scope 因为我使用 Controller 作为语法而且它工作得很好。谁能解释一下这背后的原因,为什么我只需要在导航栏中注入(inject) $scope?

最佳答案

你必须像这样初始化和注入(inject) $scope:

(function(){
'use strict';
angular.module('navbar')
.controller('NavbarCtrl', ['$scope', 'otherDependecy', function($scope, otherDependecy){
yourAwesomeCodeGoesHere();
$scope.someObject = 'Hello world';
}]);
})();

或者: (只提取 Controller 的主要功能)

(function(){
'use strict';
angular.module('navbar')
.controller('NavbarCtrl', ['$scope', 'otherDependecy', NavbarCtrl]);

function NavbarCtrl($scope, otherDependecy){
yourAwesomeCodeGoesHere();
$scope.someObject = 'Hello world';
}

})();

@更新:

您可能是指指令 Controller ?在这种情况下,$scope 会自动初始化和注入(inject),您只需记住将 $scope 作为参数添加到您的 Controller 函数中。就这样。

关于javascript - $scope 在我的导航栏 Controller 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38995093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com