我正在创建一个指令,我想在其中比较存储在模型中的值(比如" name"作为模型,它有价值" Angular") 存储在变量中。
我尝试了类似下面的内容,
var nameValue=name;
但它(nameValue)没有值" Angular"
Example:
app.directive('kmRadio', function() {
return{
restrict:'E',
compile: function(element,attrs) {
var model=ngModelName;
console.info(attrs.kmModel);
console.info("{{'+attrs.kmModel+'}}");
if(attrs.kmTitle==model) {
previewString="<input type="+"radio"+" checked>";
}
else {
previewString="<input type="+"radio"+">";
}
var htmlText=''+previewString+''+
element.replaceWith(htmlText);
}
}
})
任何人都可以告诉我如何检索存储在模型中的值(ng-model)
答案 0 :(得分:0)
您可以将指令范围中的属性链接到具有scope
属性的父级。可在此处找到详细说明:What is the difference between '@' and '=' in directive scope in AngularJS?
实质上是添加
返回{ 限制:&#39; E&#39 ;, 范围: { kmModel:&#39; = kmModel&#39; } compile:function(element,attrs){ var model = ngModelName;
console.info(attrs.kmModel);
console.info("{{'+attrs.kmModel+'}}");
if(attrs.kmTitle==model) {
previewString="<input type="+"radio"+" checked>";
}
else {
previewString="<input type="+"radio"+">";
}
var htmlText=''+previewString+''+
element.replaceWith(htmlText);
}
}
可以解决您的问题。
答案 1 :(得分:0)
您可以使用ng-checked
和链接功能简化一些事情:
app.directive('kmRadio', function() {
return {
restrict: 'E',
scope: true,
replace: true,
template: "<input type='radio' ng-checked='title == model' />",
link: function(scope, element, attrs) {
scope.model = scope.$eval(attrs.kmModel);
scope.title = attrs.kmTitle;
console.info('attrs.kmModel: ', attrs.kmModel);
console.info('scope.$eval(attrs.kmModel):', scope.model);
}
}
})
这是一个有效的演示:http://plnkr.co/edit/owTLnPUbbZIhwUtfoivt?p=preview