angularjs – Angular 1.5 Custom指令到Component
发布时间:2020-12-17 17:25:57 所属栏目:安全 来源:网络整理
导读:我已经升级到Angular 1.5,它现在支持.component()帮助器方法,以帮助用户过渡到AngularJs 2.不幸的是,它上面没有很多教程.我有以下简化的自定义指令和模板URL.任何人都可以帮我写.component()形式吗?通过这样做,我应该得到它的基础知识,并且应该能够将它用于
|
我已经升级到Angular 1.5,它现在支持.component()帮助器方法,以帮助用户过渡到AngularJs 2.不幸的是,它上面没有很多教程.我有以下简化的自定义指令和模板URL.任何人都可以帮我写.component()形式吗?通过这样做,我应该得到它的基础知识,并且应该能够将它用于更复杂的指令.提前致谢.
指示 angular.module("formText",[])
.directive("formText",['$http','formService','$mdDialog',function($http,formService,$mdDialog){
return{
scope:{headId:'&',view:'='},link: function(scope,element,attrs){
scope.show = false;
scope.formService = formService;
scope.$watch('formService',function(newVal) {
scope.content = formService.getContent();
});
},restrict:"E",replace:true,templateUrl:"partials/form/tpl/element/text.html",transclude:true
}//return
}])
模板URL <div layout='column' flex>
<md-input-container class="md-block" ng-if="view=='DRAFT'">
<label>{{label()}}</label>
<textarea style="border-bottom-color:#FFFFFF;" ng-model="content.value" columns="1" ></textarea>
</md-input-container>
<md-input-container class="md-block" ng-if="view=='READ'">
<label>{{label()}}</label>
<textarea style="border-bottom-color:#FFFFFF;" ng-model="content.value" columns="1" readonly></textarea>
</md-input-container>
<ng-transclude></ng-transclude>
</div>
解决方法
组件转换代码的指令如下所示.
angular.module("formText",[])
.component("formText",[function() {
return {
//bindings will bind all values to directive context
bindings: {
headId: '&',view: '='
},//link fn is deprecated now
controller: function(formService,$element) {
//but not sure how to do DOM manipulation,//you could have $element for play with DOM
var vm =this;
vm.show = false;
vm.formService = formService;
vm.$watch(function(formService){ return formService},function(newVal) {
vm.content = formService.getContent();
});
},controllerAs: 'vm',//restrict: "E",//by default component will E
//replace: true,//this has been deprecated
templateUrl: "partials/form/tpl/element/text.html",transclude: true
}
}])
模板 <div layout='column' flex>
<md-input-container class="md-block" ng-if="vm.view=='DRAFT'">
<label>{{vm.label()}}</label>
<textarea style="border-bottom-color:#FFFFFF;" ng-model="vm.content.value" columns="1" ></textarea>
</md-input-container>
<md-input-container class="md-block" ng-if="vm.view=='READ'">
<label>{{vm.label()}}</label>
<textarea style="border-bottom-color:#FFFFFF;" ng-model="vm.content.value" columns="1" readonly></textarea>
</md-input-container>
<ng-transclude></ng-transclude>
</div>
我建议你通过Todd Motto的this article (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
