Angularjs 带有ng元数据的指令,获取;html";来自指令中的元素
我正试图使用Angularjs 带有ng元数据的指令,获取;html";来自指令中的元素,angularjs,Angularjs,我正试图使用@directive语法将一个指令转换为ng metadata,但我很难找到一个特定的片段。该指令调用element.html(),但我似乎无法确定新指令中的位置 这是指令 angular.module('ngContenteditable', ['ngSanitize']). directive('contenteditable', ['$sce','$sanitize', function($sce, $sanitize) { return {
@directive
语法将一个指令转换为ng metadata
,但我很难找到一个特定的片段。该指令调用element.html()
,但我似乎无法确定新指令中的位置
这是指令
angular.module('ngContenteditable', ['ngSanitize']).
directive('contenteditable', ['$sce','$sanitize', function($sce, $sanitize) {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
if (!ngModel) return;
ngModel.$render = function () {
element.html($sanitize(ngModel.$viewValue || ''));
};
element.on('blur keyup change', function () {
scope.$apply(readViewText);
});
function readViewText() {
var html = element.html();
if (attrs.stripBr && html == '<br>') {
html = '';
}
ngModel.$setViewValue(html);
}
}
};
}]);
ng元数据
@指令
和@组件
的类实际上是一个控制器类。指令控制器具有本地依赖性-$scope
,$element
等
$element
应作为任何其他依赖项注入构造函数中,并像$element.html()
一样使用ng元数据的类@Directive
,@Component
实际上是一个控制器类。指令控制器具有本地依赖性-$scope
,$element
等
$element
应该作为任何其他依赖项注入构造函数,并像$element.html()
一样使用,它可能应该是$element service和$element.html()。它不是特定于ng元数据的。这就是代码从链接函数移到控制器再移回控制器时的处理方式。但是$element
从何而来?依赖注入。非常感谢你!哇,这更有道理。我一直认为这是事件参数的一部分。我从来没有想到这可能也是一种依赖!!我很快会尝试一下,然后再给你回复,但是你能不能把这个作为官方答案发布,这样我就可以相信了?当然。您可能会注意到,链接
在A1.5中不再受欢迎。我建议仔细看看A1.5(没有ng元数据)和A2中基于ES6/TS类的开发(我想您正在使用ng元数据以简化迁移)。ng元数据处理事情的方式将更有意义,它只是尝试用A1.5提供的以控制器为中心的方法模拟A2 API。它可能应该是$element service和$element.html()。它不是特定于ng元数据的。这就是代码从链接函数移到控制器再移回控制器时的处理方式。但是$element
从何而来?依赖注入。非常感谢你!哇,这更有道理。我一直认为这是事件参数的一部分。我从来没有想到这可能也是一种依赖!!我很快会尝试一下,然后再给你回复,但是你能不能把这个作为官方答案发布,这样我就可以相信了?当然。您可能会注意到,链接
在A1.5中不再受欢迎。我建议仔细看看A1.5(没有ng元数据)和A2中基于ES6/TS类的开发(我想您正在使用ng元数据以简化迁移)。ng元数据处理事情的方式将更有意义,它只是尝试用A1.5提供的以控制器为中心的方法模拟A2 API。这非常有效。非常感谢你。我觉得自己像个白痴,但我是个有工作代码的白痴!这很有效。非常感谢你。我觉得自己像个白痴,但我是个有工作代码的白痴!
import { Directive, Inject, Self, Optional, Input, HostListener } from 'ng-metadata/core';
@Directive({
selector: '[contenteditable]'
})
export class ngDirective {
@Input() stripBr: string;
constructor(
@Inject('ngModel') @Self() @Optional() private ngModel: any,
@Inject('$sce') private $sce: ng.ISCEService,
@Inject('$sanitize') private $sanitize: ng.sanitize.ISanitizeService) {
}
@HostListener('blur keyup change')
onNgChange() {
}
onReadViewText() {
let html = this.html(); // ... how do I get the HTML?
}
}