javascript - How can I pass non-string values to Angular directives? -
i have custom angular directive graphically represents “activity” in webapp. use this:
<activity-box ng-repeat="act in activities" model="act" active="{{currentactivity == act}}" /> my directive has isolated scope , declares model , active this:
appdirectives.directive('activitybox', function() { return { template: '<div ng-class="{activityactive: active == \'true\'}">{{model.name}}</div>', restrict: 'e', replace: true, scope: { model: '=', active: '@' }, link: ... }; }); i have no worry model attribute, active attribute treated string. when currentactivity == act true, active holds string value "true" (and not boolean true), or else, "false" (and not false).
this means although conceptually boolean, must treat string. instance, i'd write ng-class="{activityactive: active}" instead ng-class="{activityactive: active == 'true'}". right now, if forget part, evaluate true, both "false" , "true" truthy.
is there way me obtain non-string attributes this? what's best way achieve this?
what about?
<activity-box ng-repeat="act in activities" model="act" active="currentactivity == act" /> scope: { model: '=', active: '=' }, just tried - works. , has binding, if 'currentactivity' or 'act' change, value of 'active' inside directive change.
Comments
Post a Comment