- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个 Angular
应用程序,它有一个侧边栏,可以更新 DOM 中的各种元素。
目前我有以下配置:
index.html
<div id="sidebar" ng-controller='SidebarController' ng-class="myclass" class="col-md-2 animated fadeIn" ui-view="sidebar" ng-cloak>
<i ng-click='toggleSidebar()' class='fa fa-chevron-right'></i>
<div class='col-md-12 main'>
<section id='templates'>
<div class="btn-group">
<label class="active btn btn-primary" ng-model="templateModel" ng-click='changeTemplate(templateModel)' uib-btn-radio="'t1'">Template 1</label>
<label class="btn btn-primary" ng-model="templateModel" ng-click='changeTemplate(templateModel)' uib-btn-radio="'t2'">Template 2</label>
<label class="btn btn-primary" ng-model="templateModel" ng-click='changeTemplate(templateModel)' uib-btn-radio="'t3'">Template 3</label>
<label class="btn btn-primary" ng-model="templateModel" ng-click='changeTemplate(templateModel)' uib-btn-radio="'t4'">Template 4</label>
</div>
</section>
</div>
<div class='col-md-12 other'>
<uib-accordion close-others="oneAtATime">
<uib-accordion-group is-open="status.open" heading="Other fun things you can edit" panel-class="">
<section id='Option'>
<span>Select Option type</span>
<div class="btn-group">
<label ng-model="optionChoice" ng-click='optionType(optionChoice)' class="btn btn-primary" uib-btn-radio="'optiona'">Option A</label>
<label ng-model="optionChoice" ng-click='optionType(optionChoice)' class="active btn btn-primary" uib-btn-radio="'optionb'">Option B</label>
<label ng-model="optionChoice" ng-click='optionType(optionChoice)' class="btn btn-primary" uib-btn-radio="'optionc'">Option C</label>
</div>
</section>
</uib-accordion-group>
</uib-accordion>
</div>
</div>
<!-- MAIN CONTENT -->
<div id="main-container" class="col-md-10 animated fadeIn" ui-view="mainContent" ng-cloak></div>
以及与之关联的 Controller
SidebarController.js
:
application.controller('SidebarController', ['$scope', '$rootScope', '$http', '$state', function ($scope, $rootScope, $http, $state, $translate) {
//Select Option
$rootScope.optiona= false;
$rootScope.optionb= true;
$rootScope.optionc= false;
$scope.optionType= function (optionChoice) {
switch (optionChoice) {
case "optiona":
$rootScope.optiona= true;
$rootScope.optionb= false;
$rootScope.optionc= false;
break;
case "optionb":
$rootScope.optionb= true;
$rootScope.optiona= false;
$rootScope.optionc= false;
break;
case "optionc":
$rootScope.optionc= true;
$rootScope.optionb= false;
$rootScope.optiona= false;
break;
}
}
}]);
然后我有另一个名为 home.html
的模板:
<div id='mybtn' ng-if="general.optiona" class='alt-btn btn btn-primary' role="button">Option A</div>
<div id='mybtn' ng-if="general.optionb" class='alt-btn btn btn-primary' role="button">Option B</div>
和 Controller MainPageController.js
:
application.controller('MainPageController', ['$scope', '$rootScope', '$http', '$state', '$window', function ($scope, $rootScope, $http, $state, $window, $translate, $location) {
$scope.general = {
optiona: $rootScope.optiona,
optionb: $rootScope.optionb,
optionc: $rootScope.optionc
}
}]);
我希望相关的 div 会根据所选的选项显示,但事实并非如此。有没有办法当 SidebarController.js
更新 $rootScope
时,MainPageController.js
会自动更新?
此外,我知道将内容存储在 $rootScope
中并不是最佳实践,但在本例中我选择这样做。
我在控制台窗口中也没有收到任何错误。该应用程序在我的浏览器中运行良好,但我无法相应地更新界面
非常感谢任何帮助!
最佳答案
不要使用 $rootScope,这不是它的用途。请阅读有关 Angular 服务的信息,并使用它们在应用程序的不同部分之间共享数据。
无论你的问题如何 - 如果你想使用 $watch 函数检测 $rootScope 中的更改,你也应该阅读相关文档。
祝你好运。
关于javascript - 当 $rootScope 改变时 AngularJS 更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035606/
为什么在此示例中需要 $rootScope.$apply() 来使用页面上的 ng-hide 更新元素? 根据我的经验,每当我将 $scope.$apply() 放入 $scope.$watch 中时
$rootScope 和$rootScope.$root 有区别吗? 有什么区别 $rootScope.global.flag = true 和 $rootScope.$root.global.fla
我想在我的应用程序中共享这些功能,而我的工厂很少。问题是我必须在需要时在每个 Controller 中添加所有这些工厂。随着工厂和 Controller 数量的增加,这是一项乏味的任务! 因此我试图找
我在 $rootScope 上定义了一个方法 $rootScope.method = function(value){ // wanna give this value to `$scope.
我想知道我是否可以在 $rootScope.$on 函数中调用 $rootScope.$emit,原因是我有两个 Controller ctrl1.js 和`ctrl2.js,我想在我的 ctrl1.
谁能帮助理解 $rootScope.$new() 和 $rootScope.$new(true) 之间的区别?根据我的理解,它们应该是相同的,因为 $rootScope 没有父作用域。 最佳答案 $n
在广播和接收广播方面, Angular 1.2 rc2 和 Angular 1.2 之间有什么变化吗? 我有我认为是 $watch Controller 中的标准广播,即 $scope.$wa
我在我的应用程序中将 UI-router 用于嵌套 View ,但同时我想在路由更改时监听事件。在使用 UI-router routeChangeSuccess 之前,它触发得很好,但在 ui-rou
嗨,我想知道在性能方面什么更好。 假设我有一个广播东西的工厂: angular.module('core.foo') .factory('Foo', ['$rootScope',
我在 App.run 中定义了一些模型下面我在 Controller 中覆盖 someCtrl : App.run(['$rootScope', function($rootScope) { $r
我的应用出现以下错误 Error: [$rootScope:infdig] http://errors.angularjs.org/1.4.1/$rootScope/infdig?p0=10&p1=%
在一个 Controller 中,我这样做: $rootScope.$emit("newAction", {}); 在另一个 Controller 我做: $rootScope.$on('newAct
我想将数据从一个 Controller 发送到另一个 Controller 。其实我已经关注了这个link 我的第一个 Controller 是这样的: class ProductCtrl const
用户注销后,我需要清理我的 $rootScope。我试过 $rootScope.$destroy()但这并没有奏效。有没有办法遍历 $rootScope 中的所有值并删除它们或简单地重置它的方法? 最
抱歉,我的英语不好。我有 angularjs 应用程序,有很多页面和表单。对于任何页面,使用该页面的模型创建文件。示例: file userDict.js: $rootScope.dicts.user
当互联网不可用时,我想在每个页面上显示互联网不可用栏。 我正在使用 Ionic 框架,因此决定将代码保留在 menu.html 上 这是我的菜单 html 代码 Internet not availa
我在我的 Controller $rootScope.$on 函数中监听用户登录 $rootScope.$on('$firebaseSimpleLogin:login',functio
我在 Controller 中使用 $rootScope.$on 来监听我正在使用的模块(Angular-packery)发出的事件。它正在工作,它获取事件并且我可以在“args”上执行操作。但我想做
以下文件“有效”(即它不会引发任何错误): angular.module("modx", [], function($routeProvider) {
我有一个更新 $rootScope 的 Angular 服务。更新实际上工作正常,但它在控制台中抛出一个错误,这让我很担心。 app.service("scroll", function($rootS
我是一名优秀的程序员,十分优秀!