<br><b>Code</b>: rsb:print<br><b>Error</b>: Formatter [ rootadoname ] failed in the evaluation of <p> AngularJS (Angular) ??????????????????????????????????????[company_name] API Server ???ADO.NET Provider for [service] (????[x|db('v_drivers_count.total.count')]+ ??? ADO.NET Providers)?????????????[service] ?????????????????????????????????????[company_name] API Server ????????????[datasource] ??????????????????????????????????????HTML ??????????? </p> <h2>API Server ???</h2> <p> If you have not already done so, you will need to download the [company_name] API Server. Once you have installed the API Server and the <a href="[x|UrlRootAbs]/drivers/[id]/download/ado">ADO.NET Provider for [service]</a>, you will need to run the application, configure the driver to connect to your [datasource], and then configure the driver to create OData feeds for any tables you wish to access in your SPA. </p> <h3>Enable CORS</h3> <p> AngularJS requires servers to have CORS (Cross-origin resource sharing) enabled. We can enable CORS by navigating to the SETTINGS <i class="fa fa-angle-double-right"></i> Server tab in the API Server. You will need to adjust the following settings. </p> <ul class="bullets_blue"> <li>Click the checkbox to "Enable cross-origin resource sharing (CORS)". </li> <li>Either click the checkbox to "Allow all domains without '*'" or specify the domain(s) that are allowed to connect in <b>Access-Control-Allow-Origin</b>.</li> <li>Set <b>Access-Control-Allow-Methods</b> to "GET,PUT,POST,OPTIONS".</li> <li>Set <b>Access-Control-Allow-Headers</b> to "authorization".</li> <li>Click "Save Changes".</li> </ul> <h3>Configure Your Connection to [service]</h3> <p> To configure the API Server to connect to your [service] data, you will need to navigate to the Connections tab on the Settings page.</p> <p> Name your connection, select Other as the database, set the ADO.NET Provider (System.Data.CData.[rootadoname]), and build a connection string (or populate connection properties). [extraconnectionnotescloud|def('[extraconnectionnotes|def("")]')]</p> <img src="[x|UrlRootAbs]/kb/articles/odata-angularjs-salesforce-1.png" style="margin:0 20px 20px;" title="Connecting to [service]. (Salesforce is shown.)"></img> <h4>Configure a User</h4> <p> Next, create a user to access your [service] data through the API Server. You can add and configure users on the Users tab of the Settings page. Since we are only creating a simple SPA for viewing data, we will create a user that has read-only access. Click <i class="fa fa-plus"></i> Add, give the User a name, and select GET for the Privileges. We also allow connections from all IP addresses. </p> <img src="[x|UrlRootAbs]/kb/articles/odata-angularjs-salesforce-2.png" style="margin:0 20px 20px;" title="Creating a new user. (Salesforce is shown.)"></img> <p> As you can see in the screenshots, we already had a user configured with read and write access. For this article, we will access the API Server with the read-only user, using the associated authtoken. </p> <img src="[x|UrlRootAbs]/kb/articles/odata-angularjs-salesforce-3.png" style="margin:0 20px 20px;" title="API Server users. (Salesforce is shown.)"></img> <h3>Accessing Tables</h3> <p> Having created a user, we are ready to enable access to [service] entities as tables. To enable tables, click the Add Resources button on the Resources tab of the Settings page. Select the tables you wish to access and click Save Changes. Adding resources will create OData feeds for [service] data. </p> <img src=".[x|UrlRootAbs]/kb/articles/odata-angularjs-salesforce-4.png" style="margin:0 20px 20px;" title="Adding tables from [service]. (Salesforce is shown.)"></img> <h3>Sample URLs for OData Feeds</h3> <p> Having configured a connection to [service], created a user, and added tables to the API Server, we can access OData feeds for those tables. Below, you will see the URLs to access tables and the list of tables. For information on accessing the tables, you can navigate to the API page for the API Server (click the API link on the top right of the API Server Web page). For the URLs, you will need the <var>address</var> and <var>port</var> of the API Server. Since we are working with Angular, we will append the <var>@json</var> parameter to the end of URLs that do not return JSON data by default. </p> <p> <table> <thead> <tr> <th>Table</th> <th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th> <th>URL</th> </tr> </thead> <tbody> <tr> <td>Entity (table) List</td> <td></td> <td>http://<var>address</var>:<var>port</var>/api.rsc/</td> </tr> <tr> <td>Metadata for table [extable]</td> <td></td> <td>http://<var>address</var>:<var>port</var>/api.rsc/[extable]/$metadata?@json</td> </tr> <tr> <td>Account</td> <td></td> <td>http://<var>address</var>:<var>port</var>/api.rsc/[extable]</td> </tr> </tbody> </table> </p> <p> As with standard OData feeds, if you wish to limit the fields returned, you can add a $select parameter to the query, along with other standard OData URL parameters, such as $filter, $orderby, $skip, and $top. See the help documentation for more information on supported OData queries. </p> <h3>Building a Single Page Application</h3> <p> With the API Server setup completed, we are ready to build our SPA. Since this is a simple demonstration, we will include all of our CSS, scripting, and Angular controllers in a single file, deliberately not engaging the functionality provided by AngularJS services, factories, and custom directives. </p> <h3>CSS Definitions & Importing AngularJS Libraries</h3> <p> To start with, create some CSS rulesets to modify the table, th, td, and tr elements to format the tables of data. We also need to import the AngularJS libraries for use in our SPA. </p>. The error was: The value of the attribute could not be accessed: The attribute does not exist.<br><b>URL</b>: /jp/kb/tech/sqlite-odata-angularjs.rst