我想将一个对象传递给指令范围:
JS:
app.directive('validatePrice', function() {
return {
link: function(scope, el, attrs){
console.log(attrs.validatePrice);
}
};
});
HTML
<button validate-price="{priceValid: {'disabled': 'disabled'}}">Checkout</button>
其中priceValid
是来自控制器范围的布尔值,{'disabled': 'disabled'}
只是一个普通对象。我希望我的attrs.validatePrice
能够返回,例如:
{
true: {'disabled': 'disabled'}
}
然而它返回字符串。我怎么做? :)
答案 0 :(得分:4)
我不认为你想要什么是可能的。 priceValid
将被JavaScript解释为对象键 - 它不会被解释为true
。
无论如何,$parse或$eval是您将对象传递给指令所需的(如果您没有使用隔离的范围):
<button validate-price="{priceValid: {'disabled': 'disabled'}}">Checkout</button>
app.directive('validatePrice', function($parse) {
return {
link: function(scope, el, attrs){
var model = $parse(attrs.validatePrice);
console.log(model(scope));
console.log(scope.$eval(attrs.validatePrice));
}
};
});
如果需要更改对象,请使用$ parse。有关此示例,请参阅https://stackoverflow.com/a/15725402/215945。
答案 1 :(得分:0)
<validate-price-dir validate-price="{priceValid: {'disabled': 'disabled'}}">Checkout</validate-price-dir>
app.directive('validatePriceDir', function() {
return {
restrict: 'E',
scope: { validatePrice: '=validatePrice' },
link: function(scope, el, attrs){
console.log(scope.validatePrice);
}
};
});