I am getting multiple parse errors from AngularJS. I know 1.0.0 upgraded
AngularJS and I'm off to look through the notes now, but if anyone knows
what causes this, you could save me a lot of time!

Everything I know about AngularJS I have learned by looking at what
Guacamole does or through writing this extension. I do have a lot of
experience with Angular, so I am somewhat familiar with the concepts. I
don't really have any decent development tools for AngularJS, however, so
everything is a little opaque. Plus, I think it is fairly difficult to
bootstrap a test environment that looks like Guacamole ;)

The authentication provider adds start and stop buttons and a status
indicator. The service itself links these to GCP to start and stop the VMs.
This panel of controls appears to the left of each connection in the list
of connections. The panel does display, but it isn't doing anything on
click (not even erroring).

The browser console shows this:

angular.js:14800 Error: [$parse:syntax]
http://errors.angularjs.org/1.6.9/$parse/syntax?p0=%7B&p1=invalid%20key&p2=17&p3=xxxAuthGcpStop(%7B%7Bitem.identifier%7D%7D)&p4=%7Bitem.identifier%7D%7D
)
    at angular.js:88
    at q.throwError (angular.js:15358)
    at q.object (angular.js:15347)
    at q.primary (angular.js:15236)
    at q.unary (angular.js:15224)
    at q.multiplicative (angular.js:15211)
    at q.additive (angular.js:15202)
    at q.relational (angular.js:15193)
    at q.equality (angular.js:15184)
    at q.logicalAND (angular.js:15176) "<svg id="xxx-stop" width="100%"
height="100%" viewBox="0 0 16 24" fit="" focusable="false" xmlns="
http://www.w3.org/2000/svg"; preserveAspectRatio="xMidYMid meet"
class="xxx-icon xxx-enabled"
ng-click="xxxAuthGcpStop({{item.identifier}})">"

The actual template is huge, so I am reluctant to include the whole thing
here, but this is an excerpt:

<span class="xxx-status"><!-- Because of the way this is compiled, it
*must* have just one root element --><span
class="xxx-menu" ng-if="item.identifier && canManageConnection"
><!-- Lots of stuff missed out here for the status indicator (big
ng-switch) --><!-- SVG here for the start button --><svg
id="xxx-stop" width="100%" height="100%" viewBox="0 0 16 24" fit=""
focusable="false"
xmlns="http://www.w3.org/2000/svg"; preserveAspectRatio="xMidYMid meet"
class="xxx-icon xxx-enabled" ng-click="xxxAuthGcpStop({{item.identifier}})">
<path d="M2 6h12v12H2z" fill-rule="evenodd" />
<title>Stop Instance</title>
</svg></span></span>


And it is part of a directive that is used like this:

<meta name="before" content=".home-connection">
<xxx-auth-gcp item="item"></xxx-auth-gcp>

My initial guess was that 1.0.0 changed the use of item.identifier, as that
is what the error message suggested to me, but they have reasonable values
in the document when I look through developer tools. The next most likely
option is that it cannot find the method that is bound to the ng-click.
Unless I find something else, that is my next avenue of investigation.

Thanks,
Mark.
.

Reply via email to