+
`};});将指令转换为组件的第一步是将.directive()更改为.component()。指令.directive('abacus',函数abacus(){返回{};});成分.component('abacus',返利宝,函数abacus(){});又好又简单。本质上,.directive()中的return{};语句成为.component()中的对象定义。令人惊叹的!绑定在.directive()中,scope属性允许我们定义是要隔离$scope还是继承它,现在这已成为一个明智的默认值,使我们的指令始终具有隔离的作用域。所以每次重复我们自己只会造成过多的样板。通过引入bindToController,我们可以显式地定义要传递到隔离范围中的属性,并直接绑定到控制器。使用.component()上的bindings属性,我们可以删除这个样板文件,并简单地定义要传递给组件的内容,前提是组件将具有一个独立的作用域。//以前.directive('abacus',函数abacus(){返回{作用域:{},绑定控制器:{计数:'='}};});//之后.component('abacus'{绑定:{计数:'='}});重构控制器功能我们声明controller的方式没有任何改变,但是它现在更聪明了一点,默认的controllerAs值是$ctrl。如果我们使用组件的本地控制器,我们将执行以下操作://1.4条{...控制器:函数(){}...}如果使用其他地方定义的控制器,我们将执行以下操作://1.4条{..."SomeController:"SomeController'...}如果要在此阶段定义controllerAs,则需要创建新属性并定义实例别名://1.4条{...controller:'SomeCtrl',controllerAs:'虚拟机'...}这样我们就可以使用虚拟机标题在我们的模板中与控制器的实例进行对话。在AngularJS 1.5中,我们可以在inside.component()中执行以下操作://1.5条{...controller:'SomeCtrl as vm'...}这有助于我们通过防止使用controllerAs属性来最小化代码。但是,我们可以添加controllerAs属性来保持向后兼容性,或者如果您的风格适合编写指令或组件,则可以保留它。还有一个选项完全不需要controllerAs,Angular会自动使用属性$ctrl。例如:.component('bet'{控制器:功能(){这个.betNumber=777个;}});在上面的代码中,没有controllerAs属性。在我们的模板中,微信返利机器人,云市场,controller默认为$ctrl,因此我们可以使用$ctrl.betNumber.由于不需要controllerAs属性,我们只需将指令重构为如下组件://以前.directive('abacus',函数abacus(){返回{作用域:{},绑定控制器:{计数:'='},控制器:功能(){函数增量(){这个。计数++;}函数减量(){这个。计数--;}这个增量=增量;这个。减量=减量;},controllerAs:'算盘'};});//之后.component('abacus'{绑定:{计数:'='},控制器:功能(){函数增量(){这个。计数++;}函数减量(){这个。计数--;}这个增量=增量;这个。减量=减量;}});模板化更改请看下面的代码,以及模板属性是如何定义的。.component('abacus'{绑定:{计数:'='},控制器:功能(){函数增量(){这个。计数++;}函数减量(){这个。计数--;}这个增量=增量;这个。减量=减量;},模板:`本文地址: /shujuku/35339.html
版权声明:本文发布于收集站云 内容均来源于互联网 如有侵权联系删除