对于消失的Controller感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍消失的她,并为您提供关于angularjs–错误:[$controller:ctrlreg]名称为“CounterC
对于消失的Controller感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍消失的她,并为您提供关于angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、angularJS指令中的controller和controllerAs、c# – MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?、com.badlogic.gdx.controllers.ControllerListener的实例源码的有用信息。
本文目录一览:- 消失的Controller(消失的她)
- angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.
- angularJS指令中的controller和controllerAs
- c# – MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?
- com.badlogic.gdx.controllers.ControllerListener的实例源码
消失的Controller(消失的她)
我最近在研发基于.net core的公司8.0版本框架,现有如下项目结构:
项目依赖关系如下:
入口项目:Ricebird.BaseFramework,依赖于其它所有项目。
Ricebird.Framework:配置项目,依赖倒置用,公用接口全部在这(内含Controller)
Ricebird.DefaultUserCenter:用户模块(内含Controller)
Ricebird.DataEngine:数据库服务
Ricebird.Configurations:系统配置服务(内含Controller)
Ricebird.Authentication:认证服务(内含Controller)
现使用以下配置方法:
var builder = services.AddMvc()
.AddControllersAsServices()
.AddNewtonsoftJson();
现有问题,我能够正常访问在 入口项目 的 Inst.........
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指令中的controller和controllerAs
自定义指令中还可以定义controller属性,是一个function,可以在其中定义数据和方法,可以提供给该指令的link内的方法使用。
示例的html:
<divng-app="myApp"> <divng-controller="firstController"> <divbook-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><ling-repeat="bookinbooks">{{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定义的点击事件:
c# – MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?
这是我要重写的代码:
protected string RenderPartialViewToString(string viewName,object model) { if (string.IsNullOrEmpty(viewName)) viewName = ControllerContext.RouteData.GetrequiredString("action"); ViewData.Model = model; using (StringWriter sw = new StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,viewName); ViewContext viewContext = new ViewContext(ControllerContext,viewResult.View,ViewData,TempData,sw); viewResult.View.Render(viewContext,sw); return sw.GetStringBuilder().ToString(); } }
解决方法
首先我应该提到一个控制器不再是一个顶级的上下文,一个动作就是.所以你可以用ActionContext替代ControllerContext
ViewEngines
这是事情有点尴尬!我不完全确定如何获得视觉引擎,但新的DI框架已经添加了一个可以为您完成此工作的CompositeViewEngine的引用.例如:
var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
所以把这一切放在一起,这应该适合你:
protected string RenderPartialViewToString(string viewName,object model) { if (string.IsNullOrEmpty(viewName)) viewName = ActionContext.ActionDescriptor.Name; ViewData.Model = model; using (StringWriter sw = new StringWriter()) { var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine; ViewEngineResult viewResult = engine.FindPartialView(ActionContext,viewName); ViewContext viewContext = new ViewContext( ActionContext,sw,new HtmlHelperOptions() //Added this parameter in ); //Everything is async Now! var t = viewResult.View.RenderAsync(viewContext); t.Wait(); return sw.GetStringBuilder().ToString(); } }
com.badlogic.gdx.controllers.ControllerListener的实例源码
/** * Initializes the BufferBciController instance. */ public BufferBciController() { this.buttons = new ArrayList<BufferBciButton>(); this.axes = new ArrayList<BufferBciAxis>(); this.controllerListeners = new ArrayList<ControllerListener>(); this.unprocessedEvents = new ArrayList<BufferEvent>(); }
/** * Called whenever a button is updated. * @param btn */ private void onButtonUpdated(BufferBciButton btn) { // Inform listeners. for (ControllerListener cl : controllerListeners) { if (btn.activated) { cl.buttonDown(this,btn.code); } else { cl.buttonUp(this,btn.code); } } }
/** * Called whenever an axis is updated. * @param axis */ protected void onAxisUpdated(BufferBciAxis axis) { // Inform listeners. for (ControllerListener cl : controllerListeners) { cl.axisMoved(this,axis.code,axis.value); } }
@Override public void addListener(ControllerListener listener) { listeners.add(listener); }
@Override public void removeListener(ControllerListener listener) { listeners.removeValue(listener,true); }
@Override public void addListener(ControllerListener listener) { this.listeners.add(listener); }
@Override public void removeListener(ControllerListener listener) { this.listeners.removeValue(listener,true); }
public Array<ControllerListener> getListeners() { return listeners; }
@Override public void addListener (ControllerListener listener) { synchronized(eventQueue) { listeners.add(listener); } }
@Override public void removeListener (ControllerListener listener) { synchronized(eventQueue) { listeners.removeValue(listener,true); } }
@Override public void addListener (ControllerListener listener) { this.listeners.add(listener); }
@Override public void removeListener (ControllerListener listener) { this.listeners.removeValue(listener,true); }
public Array<ControllerListener> getListeners() { return this.listeners; }
@Override public void addListener(ControllerListener listener) { this.listeners.add(listener); }
@Override public void removeListener(ControllerListener listener) { this.listeners.removeValue(listener,true); }
public Array<ControllerListener> getListeners() { return listeners; }
@Override public void addListener(ControllerListener listener) { synchronized(eventQueue) { listeners.add(listener); } }
@Override public void removeListener(ControllerListener listener) { synchronized(eventQueue) { listeners.removeValue(listener,true); } }
public void addListener (ControllerListener listener) { listeners.add(listener); }
public void removeListener (ControllerListener listener) { listeners.removeValue(listener,true); }
public void addListener (ControllerListener listener) { listeners.add(listener); }
public void removeListener (ControllerListener listener) { listeners.removeValue(listener,true); }
public void addListener (ControllerListener listener) { listeners.add(listener); }
public void removeListener (ControllerListener listener) { listeners.removeValue(listener,true); }
@Override public void addListener(ControllerListener listener) { controllerListeners.add(listener); }
@Override public void removeListener(ControllerListener listener) { controllerListeners.remove(listener); }
@Override public void addListener(ControllerListener listener) { }
@Override public void removeListener(ControllerListener listener) { }
关于消失的Controller和消失的她的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、angularJS指令中的controller和controllerAs、c# – MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?、com.badlogic.gdx.controllers.ControllerListener的实例源码的相关信息,请在本站寻找。
本文标签: