GVKun编程网logo

在运行时动态分配ng-controller(动态方式分配内存是在程序运行时进行的)

9

本文的目的是介绍在运行时动态分配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(动态方式分配内存是在程序运行时进行的)

在运行时动态分配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”的控制器未注册.

angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.

当我在Chrome中按F12时,我看到了这个错误.
似乎没有问题.

我的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

Angularjs,使用data-ng-controller和ng-controller

有时我看到数据管理控制器,但更常见的是ng控制器

我已经使用了ng控制器,这似乎很清楚。但是data-ng-controller ..是什么?

他们之间有什么区别,哪里使用什么?

Angularjs使用归一化过程进行指令名称/属性匹配。

从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

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

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等相关知识,可以在本站进行查询。

本文标签: