我正在编写一个由内联编辑器组成的指令。当没有值时,将出现编辑框。当有值时,将出现一个常规跨度。
这是指令的模板块。
template: function (element,attrs) {
if (1 === 2) {
return "<div class='true'>{{product.title}}</div>";
} else {
return "<div class='false'>{{product.title}}</div>";
}
}
上面的代码有效,但条件将基于收到的模型值,我 ngModel
之前通过了,但它没有工作:
require: '?ngModel',
template: function (element,attrs,ngModel) {
if (ngModel.$modelValue !== null) {
return "<div class='true'>{{product.title}}</div>";
} else {
return "<div class='false'>{{product.title}}</div>";
}
}
HTML:
<div inline-editor ng-model="product.title"></div>
如何获取 AngularJS 指令以根据模型值加载不同的模板?
编辑:谢谢大家的回答!,我接受了你的意见,现在我有以下代码。为我工作到现在,我将继续努力。
return {
restrict: "A",
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
if (!ngModel) return;
//Formatter
function writeElement (value) {
var template;
if (value !== null) {
template = "<span>" + value + "</span>";
} else {
//template for false
}
element.replaceWith(template);
}
ngModel.$formatters.push(writeElement);
}