Fixes #163 w-for was not being removed

This commit is contained in:
Phillip Gates-Idem 2016-10-12 14:43:43 -04:00
parent c9e94eb413
commit 76da236ee5
6 changed files with 30 additions and 6 deletions

View File

@ -16,17 +16,15 @@
module.exports = function handleWidgetFor() {
var el = this.el;
if (!el.hasAttribute('w-for')) {
return;
}
var widgetFor = el.getAttributeValue('w-for');
el.removeAttribute('w-for');
if (widgetFor == null) {
return;
}
// Handle the "w-for" attribute
if (el.hasAttribute('for')) {
this.addError('The "w-for" attribute cannot be used in conjuction with the "for" attribute');

View File

@ -48,7 +48,9 @@ module.exports = function transform(el, context) {
if (el.hasAttribute('w-id')) {
transformHelper.assignWidgetId();
} else if (el.hasAttribute('w-for')) {
}
if (el.hasAttribute('w-for')) {
transformHelper.handleWidgetFor();
}

View File

@ -40,5 +40,6 @@
"eqeqeq": false,
"latedef": true,
"unused": "vars",
"eqnull": true
"eqnull": true,
"expr": true
}

View File

@ -0,0 +1,7 @@
module.exports = require('marko-widgets').defineComponent({
template: require('./template.marko'),
init: function() {
}
});

View File

@ -0,0 +1,4 @@
<div w-bind>
<label w-id="label" w-for="input">foo</label>
<input w-id="input" value="test">
</div>

View File

@ -0,0 +1,12 @@
var expect = require('chai').expect;
module.exports = function(helpers) {
var widget = helpers.mount(require('./index'), {});
var label = widget.getEl('label');
var forElId = label.getAttribute('for');
var inputEl = document.getElementById(forElId);
expect(forElId).to.exist;
expect(inputEl.value).to.equal('test');
expect(label.getAttribute('w-for')).to.equal(null);
};