本文的目的是介绍在运行时动态分配ng-controller的详细情况,特别关注动态方式分配内存是在程序运行时进行的的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解在运
本文的目的是介绍在运行时动态分配ng-controller的详细情况,特别关注动态方式分配内存是在程序运行时进行的的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解在运行时动态分配ng-controller的机会,同时也不会遗漏关于angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、Angularjs,使用data-ng-controller和ng-controller、angularJS指令中的controller和controllerAs、Angularjs,使用data-ng-controller和ng-controller的知识。
本文目录一览:- 在运行时动态分配ng-controller(动态方式分配内存是在程序运行时进行的)
- angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.
- Angularjs,使用data-ng-controller和ng-controller
- angularJS指令中的controller和controllerAs
- Angularjs,使用data-ng-controller和ng-controller
在运行时动态分配ng-controller(动态方式分配内存是在程序运行时进行的)
我有一种需要动态更改控制器的情况,以便相应地影响范围变量。总体结构:
<div ng-controller="GameController"> // some general HTML which fits all types of games <div ng-controller="someScopeVar"> // Type of game // some game-type-specific ng-models that should respond to the change of controller, i.e scope </div</div>
我在这里看到它可以在一个ng-repeat
。可以在外面做吗?换句话说,我可以告诉angular将其读取为变量而不是字符串文字吗?
答案1
小编典典正如评论中所讨论的那样,angular
具有用于处理这些情况的强大 功能/库 - (具有强大的
Wiki ) 。 ui-router
这ui-router
是需要开发功能块- 状态 的答案,而不是在视图/ URL中进行思考 (从首页引用) :
AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到 状态机中 。与Angular
ngRoute模块中的 $ route 服务不同,Angular ngRoute模块是围绕URL路由UI-Router
组织的,而是围绕
state进行 组织的, state 可以有选择地附加路由以及其他行为。
有一些非常有趣的博客文章:
- 带有ui-router的AngularJS状态管理 (作者Ben Schwartz)
…关于AngularJS的新路由器,最有趣的不是路由器本身,而是它附带的状态管理器。而不是针对要针对给定URL呈现的控制器/视图,而是针对状态。状态以层次结构进行管理,提供父状态的继承和页面组件的复杂组成,而在本质上始终保持声明性…
- 在AngularJS中使用ui-router的基础知识(作者Joel Hooks)
…
ui-router
完全包含路由系统的状态机性质。它允许您 定义状态 ,并将应用程序 转换 为这些状态。真正的好处是,它可以
使嵌套状态解耦 ,并以优雅的方式进行一些非常复杂的布局。
正是我们需要的一点-解耦子状态… 实际上实际上 是 动态更改控制器 …可以通过更改URL或仅通过状态更改
(一个同级子而不是其他不进行URL更改)
您需要对路由进行一些不同的思考,但是一旦您掌握了基于状态的方法,我想您会喜欢的…
最后,链接很少,我将其标记为ui-router的圣杯
示例应用程序。实际上,我们可以看到ui路由器状态机的工作方式。我们可以加载 列表 作为 家长状态 ,那么我们可以选择行项目,这的确代表了自己的 孩子的状态 ......而家长没有重装 ( 这里我试图解释它的更多细节)
state.js
-示例应用程序的基本代码。这是我见过的记录最好的代码片段之一……花了一些时间来完成,这将为您提供80%的答案:ui-Router
工作原理
根据我的经验,这确实适用于小型应用程序以及大型系统……喜欢它……
angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.
似乎没有问题.
我的HTML代码
<ulrole="menu" ng-controller="CounterController"> <li ng-repeat="item in messages"><a href="">{{item.name}}</a></li> </ul>
这是我的js文件.知道为什么吗?
我使用的angualr的版本是1.6.1
角度控制器代码
angular .module('myApp.counter_controller',[]) .controller('CounterController',['$scope','$filter',function($scope,$filter) { 'use strict'; $scope.messages = [{ name : 'ENG',read : false },{ name : 'JPN',{ name : 'CHI',]; $scope.setRead = function(item,$event) { $event.preventDefault(); $event.stopPropagation(); item.read = true; }; $scope.setUnread = function(item,$event) { $event.preventDefault(); $event.stopPropagation(); item.read = false; }; $scope.setReadAll = function($event) { $event.preventDefault(); $event.stopPropagation(); angular.forEach($scope.messages,function(item) { item.read = true; }); }; $scope.unseenCount = $filter('filter')($scope.messages,{ read: false }).length; $scope.$watch('messages',function(messages) { $scope.unseenCount = $filter('filter')(messages,{ read: false }).length; },true); }]);
解决方法
请看它正常工作的代码:code link
输出:Main Output
Angularjs,使用data-ng-controller和ng-controller
我已经使用了ng控制器,这似乎很清楚。但是data-ng-controller ..是什么?
他们之间有什么区别,哪里使用什么?
从http://docs.angularjs.org/guide/directive的angularjs文件。
部分匹配指令:
The normalization process is as follows:
Strip x- and data- from the front of the element/attributes. Convert the :,-,or _-delimited name to camelCase.
angularJS指令中的controller和controllerAs
自定义指令中还可以定义controller属性,是一个function,可以在其中定义数据和方法,可以提供给该指令的link内的方法使用。
示例的html:
<div ng-app="myApp">
<div ng-controller="firstController">
<div book-list></div>
</div>
</div>
angular.module(''myApp'',[])
.directive(''bookList'',function(){
return {
restrict:''ECAM'',
//此处定义了该指令的controller属性
controller:function($scope){
$scope.books=[
{name:''php''},
{name:''javascript''},
{name:''java''}
];
this.addBook=function(){ //或者 scope.addBook=...
alert(''test'');
}
},
controllerAs:''bookListController'', //给当前controller起个名称
template:''<ul><li ng-repeat="book in books">{{ book.name }}</li></ul>'',
replace:true,
//link中注入 bookListController ,就可以使用它的方法了
link:function(scope,iElement,iAttrs,bookListController){
iElement.on(''click'',bookListController.addBook);
}
}
})
.controller(''firstController'',[''$scope'',function($scope){
}])
执行结果:
点击则触发了link定义的点击事件:
Angularjs,使用data-ng-controller和ng-controller
有时我看到data-ng-controller
但更多ng-controller
在ng-controller
我已经用这似乎很清楚。但是data-ng-controller
..是为了什么?
它们之间有什么区别,在哪里使用什么?
答案1
小编典典Angularjs使用规范化过程来进行指令名称/属性匹配。
从位于http://docs.angularjs.org/guide/directive的angularjs文档中。
部分匹配指令:
规范化过程如下:
从元素/属性的前面去除x-和data-。将:,-或_分隔的名称转换为camelCase。
今天关于在运行时动态分配ng-controller和动态方式分配内存是在程序运行时进行的的分享就到这里,希望大家有所收获,若想了解更多关于angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、Angularjs,使用data-ng-controller和ng-controller、angularJS指令中的controller和controllerAs、Angularjs,使用data-ng-controller和ng-controller等相关知识,可以在本站进行查询。
本文标签: