Questions tagged «angularjs-scope»

在AngularJS中,范围是指引用应用程序模型的对象。它是表达式的执行上下文。

8
在标记中设置角度范围变量
一个简单的问题:如何在html中设置作用域值,以供控制器读取? var app = angular.module('app', []); app.controller('MyController', function($scope) { console.log($scope.myVar); }); <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app='app'> <div ng-controller="MyController" app-myVar="test"> {{myVar}} </div> </div> 运行代码段隐藏结果展开摘要 JSFiddle:http : //jsfiddle.net/ncapito/YdQcX/

6
为什么要使用if(!$ scope。$$ phase)$ scope。$ apply()作为反模式?
有时我需要$scope.$apply在代码中使用它,有时它会引发“已消化的摘要”错误。所以我开始找到解决这个问题的方法,并找到了这个问题:AngularJS:防止在调用$ scope。$ apply()时发生错误$ digest。但是,您可以在评论中(和角度维基上)阅读: 如果(!$ scope。$$ phase)$ scope。$ apply()不执行,那意味着您的$ scope。$ apply()在调用堆栈中不够高。 所以现在我有两个问题: 为什么这是反模式? 我如何安全地使用$ scope。$ apply? 另一个防止“已消化摘要”错误的“解决方案”似乎正在使用$ timeout: $timeout(function() { //... }); 那是路要走吗?更安全吗?所以这才是真正的问题:我该怎么办完全消除“已消化的消化”错误的可能性? PS:我只在非同步的非angularjs回调中使用$ scope。$ apply。(据我所知,在某些情况下,如果要应用更改,必须使用$ scope。$ apply)

5
如何清除或停止angularjs中的timeInterval?
我正在制作一个演示,其中我将使用以下常规时间间隔从服务器获取数据 $interval现在我需要停止/取消此操作。 我该如何实现?如果需要重新启动该过程,该怎么办? 其次,我还有一个问题:在规定的时间间隔后,我正在从服务器获取数据。是否有任何需要使用$scope.apply或$scope.watch? 这是我的朋克: app.controller('departureContrl',function($scope,test, $interval){ setData(); $interval(setData, 1000*30); function setData(){ $scope.loading=true; test.stationDashBoard(function(data){ console.log(data); $scope.data=data.data; $scope.loading=false; //alert(data); },function(error){ alert('error') }) ; } }); http://plnkr.co/edit/ly43m5?p=preview

2
AngularJS指令元素方法绑定-TypeError:无法使用“ in”运算符在1中搜索“ functionName”
这是主模板的控制器: app.controller('OverviewCtrl', ['$scope', '$location', '$routeParams', 'websiteService', 'helperService', function($scope, $location, $routeParams, websiteService, helperService) { ... $scope.editWebsite = function(id) { $location.path('/websites/edit/' + id); }; }]); 这是指令: app.directive('wdaWebsitesOverview', function() { return { restrict: 'E', scope: { heading: '=', websites: '=', editWebsite: '&' }, templateUrl: 'views/websites-overview.html' } }); 这是在主模板中应用指令的方式: <wda-websites-overview heading="'All websites'" websites="websites" edit-website="editWebsite(id)"></wda-websites-overview> …

17
单击ng的确认对话框-AngularJS
我正在尝试ng-click使用自定义angularjs指令在上设置确认对话框: app.directive('ngConfirmClick', [ function(){ return { priority: 1, terminal: true, link: function (scope, element, attr) { var msg = attr.ngConfirmClick || "Are you sure?"; var clickAction = attr.ngClick; element.bind('click',function (event) { if ( window.confirm(msg) ) { scope.$eval(clickAction) } }); } }; }]) 这很好用,但不幸的是,未评估使用我的指令的标记内的表达式: <button ng-click="sayHi()" ng-confirm-click="Would you like to say …

5
AngularJS-如何以编程方式创建新的隔离范围?
我想用Angular.factory创建一个AlertFactory。我定义了一个HTML模板,如下所示 var template = "<h1>{{title}}</h1>"; 标题由调用控制器提供,并按以下方式应用 var compiled = $compile(template)(scope); body.append(compiled); 那么,如何将隔离范围从控制器传递到工厂?我在控制器中遵循代码 AlertFactory.open($scope); 但是$ scope是全局控制器作用域变量。我只想为带有title属性的工厂传递一个小的范围。 谢谢。

5
Angular UI模式的范围问题
我在理解/使用角度UI模式的范围时遇到麻烦。 虽然这里没有立即显示出来,但我已经正确地设置了模块和所有内容(据我所知),但是这些代码示例尤其是在我发现错误的地方。 index.html(重要部分) <div class="btn-group"> <button class="btn dropdown-toggle btn-mini" data-toggle="dropdown"> Actions <span class="caret"></span> </button> <ul class="dropdown-menu pull-right text-left"> <li><a ng-click="addSimpleGroup()">Add Simple</a></li> <li><a ng-click="open()">Add Custom</a></li> <li class="divider"></li> <li><a ng-click="doBulkDelete()">Remove Selected</a></li> </ul> </div> Controller.js(同样是重要部分) MyApp.controller('AppListCtrl', function($scope, $modal){ $scope.name = 'New Name'; $scope.groupType = 'New Type'; $scope.open = function(){ var modalInstance = $modal.open({ …

7
AngularJS 1.5+组件不支持Watchers,如何解决?
我一直在将自定义指令升级到新的组件体系结构。我读过,组件不支持观察者。它是否正确?如果是这样,您如何检测对象的变化?对于一个基本示例,我有一个自定义组件myBox,该组件具有一个子组件游戏,并带有对游戏的绑定。如果游戏组件中有找零游戏,如何在myBox中显示警告消息?我知道有rxJS方法可以纯粹在角度上做到这一点吗?我的JSFiddle 的JavaScript var app = angular.module('myApp', []); app.controller('mainCtrl', function($scope) { $scope.name = "Tony Danza"; }); app.component("myBox", { bindings: {}, controller: function($element) { var myBox = this; myBox.game = 'World Of warcraft'; //IF myBox.game changes, show alert message 'NAME CHANGE' }, controllerAs: 'myBox', templateUrl: "/template", transclude: true }) app.component("game", { bindings: …


5
参数更改时刷新角度指令
我有一个初始化的角度指令,如下所示: <conversation style="height:300px" type="convo" type-id="{{some_prop}}"></conversation> 我希望它足够聪明,可以在$scope.some_prop更改时刷新指令,因为这意味着它应该显示完全不同的内容。 我已经对其进行了测试,但没有任何反应,$scope.some_prop更改时甚至没有调用链接函数。有没有办法做到这一点?

5
如何在angularjs ui路由器的状态之间共享$ scope数据?
在不使用服务或在父控制器中构造观察程序的情况下,如何使子状态访问主控制器的$scope。 .state("main", { controller:'mainController', url:"/main", templateUrl: "main_init.html" }) .state("main.1", { controller:'mainController', parent: 'main', url:"/1", templateUrl: 'form_1.html' }) .state("main.2", { controller:'mainController', parent: 'main', url: "/2", templateUrl: 'form_2.html' }) 我无法在子状态下访问mainController范围-或者我正在获取该范围的另一个实例-不是我想要的。我觉得我缺少一些简单的东西。在状态对象中有一个共享的数据配置选项,但是我不确定是否应该将其用于这样的事情。

11
简单的ng-include无法正常工作
我是第一次使用AngularJS,并且在使用ng-include作为页眉和页脚时遇到了麻烦。 这是我的树: myApp assets - CSS - js - controllers - vendor - angular.js - route.js ...... ...... ...... main.js pages - partials - structure header.html navigation.html footer.html index.html home.html index.html: <!DOCTYPE html> <html ng-app="app"> <head> <title>AngularJS Test</title> <script src="/assets/js/vendor/angular.js"></script> <script src="/assets/js/vendor/route.js"></script> <script src="/assets/js/vendor/resource.js"></script> <script src="/assets/js/main.js"></script> </head> <body> <div ng-include …

9
AngularJS指令不会在范围变量更改时更新
我尝试编写一个小指令,以将其内容包装在另一个模板文件中。 这段代码: <layout name="Default">My cool content</layout> 应该具有以下输出: <div class="layoutDefault">My cool content</div> 因为布局“默认”具有以下代码: <div class="layoutDefault">{{content}}</div> 指令的代码如下: app.directive('layout', function($http, $compile){ return { restrict: 'E', link: function(scope, element, attributes) { var layoutName = (angular.isDefined(attributes.name)) ? attributes.name : 'Default'; $http.get(scope.constants.pathLayouts + layoutName + '.html') .success(function(layout){ var regexp = /^([\s\S]*?){{content}}([\s\S]*)$/g; var result = regexp.exec(layout); var …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.