I will put some numbers on each subject to keep track of the discussions easier
.
1. Ok, so your spec says that the foundset property's viewport should contain "filename" and "font_name". For each of the two you should choose a dataprovider (column from the foundset's table) in properties view in developer - under "myFoundset" property; did you do that? If yes then on the client in myFoundset.viewPort.rows you should get stuff like {"_svyRowId":"1.1;_0", "filename":"veryImportant.pdf", "font_name":"Wingdings"}
If you want changes that happen client-side to those values (like for example if myFoundset.viewPort.rows[0].font_name changes value) to be reflected in server-side foundset you should add ', "pushToServer": "shallow"' to myFoundset's declaration instead of allow; that will automatically shallow-watch the values in viewPort.rows on client side and send them to server when changed. (the 'allow' that you used just allows them to be changed server side but does't really watch for changes and doesn't send them from client)
2. I see you also have col1, col2 and col3 defined in your spec file. If the above works I guess you don't need these. But anyway those, as they are defined now, are normal dataprovider properties - they are not linked to "myFoundset". So when you select a dataprovider in properties view it might not even be a column from myFoundset (for example if in properties view you choose a foundset different then form's foundset). If you want those to be columns from "myFoundset" add to them forFoundset like this: "col1": {"type": "dataprovider", "pushToServer": "allow", "forFoundset": "myFoundset"}
If you do this then in col1 in client you should get an array of values (of the same size as myFoundset's viewport representing the rows in that viewport) instead of a single value. These foundset-linked dataproviders are currently read-only as their push-to-server is not implemented yet. But there is a case for that so when that is done it will work.
3. Now about the other thing you mentioned with bindings. Properties of type "dataprovider" (that are not foundsetLinked, so no forFoundset) will only apply their changes to the server-side record through the svy_autoapply directive or through calling apply from code (this I think is mostly lacking in wiki - it needs to be documented better). And you should also allow that with pushToServer: "allow" (which you already have). Shallow/deep would not help here. Only apply or svy-autoapply do the job for "dataprovider" typed properties. I think the best way is to look at what existing servoy components do.
For example:
- textfield.spec and textfield.html show how svy-autoApply can be used when ng-model is used: <input (...) ng-model="model.dataProviderID" svy-autoapply>
- typeahead.js show how apply API can be used: $scope.svyServoyapi.apply('dataProviderID'); - where svyServoyapi is defined above as scope: { svyServoyapi: "=" }
If you get more internal errors you should check-out the detailed error messages for hints on what went wrong (it could be for example typos in the spec files or in the js files).