I fix that and didn't work either, any other advice?

On Mon, Mar 17, 2014 at 1:58 AM, Aleck Landgraf <
[email protected]> wrote:

> Two things to try:
>
> 1. add the third param to $watch. i.e. scope.$watch(attrs.trigger, fn,
> true);
> 2. add a two-way binding to `trigger` with the directive scope, then watch
> `scope.trigger` instead of `attrs.trigger`
> e.g.
> return {
>             restrict: "C",
>             scope: {trigger: "="},
>            ...
>
> -Aleck
>
> On Friday, March 14, 2014 2:10:11 PM UTC-4, Reynier Pérez wrote:
>>
>> Hi, I'm trying to build a dependant select for Countries > States >
>> Cities. So here is my code for Countries > States:
>>
>> app.directive('country', ['$http', function($http) {
>>         return {
>>             restrict: "C",
>>             link: function(scope, element, attrs) {
>>                 $http.get(Routing.generate('
>> countries')).success(function(data) {
>>                     if (data.message) {
>>                         scope.message = data.message;
>>                     } else {
>>                         scope.countries = data.entities;
>>                      }
>>                 }).error(function(data, status, headers, config) {
>>                     if (status == '500') {
>>                         scope.message = "No hay conexión con el
>> servidor.";
>>                     }
>>                 });
>>             }
>>         };
>>     }]);
>>
>> app.directive('state', ['$http', function($http) {
>>         return {
>>             restrict: "C",
>>             link: function(scope, element, attrs) {
>>                 console.log(eval('scope.' + attrs.trigger));
>>
>>                 scope.$watch(attrs.trigger, function(selectedType) {
>>                     if (eval('scope.' + attrs.trigger) !== undefined) {
>>                         states = eval('scope.' + attrs.statetrigger);
>>                         states = {};
>>
>>                         $http.get(Routing.generate('states') + '/' +
>> eval('scope.' + attrs.trigger).iso_country).success(function(data) {
>>                             if (data.message) {
>>                                 scope.message = data.message;
>>                             } else {
>>                                 scope.states = data.entities;
>>                             }
>>                         }).error(function(data, status, headers, config) {
>>                             if (status == '500') {
>>                                 scope.message = "No hay conexión con el
>> servidor.";
>>                             }
>>                         });
>>                     }
>>                 });
>>             }
>>         };
>>     }]);
>>
>> And this is the HTML code associated:
>>
>>     <select class="country"
>>             ng-model = "country"
>>             ng-options = "country.iso_country as country.name for
>> country in countries"
>>             tooltip = ""
>>             tooltip-trigger = "focus"
>>             tooltip-placement = "right"
>>             wv-cur = ""
>>             wv-err = "Error!"
>>             wv-req = "The value you selected is not a valid choice"
>>             type = "text">
>>         <option value="">{{ "Select country" | trans }}</option>
>>     </select>
>>
>>     <select class="state"
>>             ng-model = "state"
>>             ng-disabled = "!states"
>>             ng-options = "state.iso as state.name for state in states"
>>             tooltip-trigger = "focus"
>>             tooltip-placement = "right"
>>             wv-cur = ""
>>             wv-err = "Error!"
>>             wv-req = "The value you selected is not a valid choice"
>>             type = "text"
>>             trigger = "country">
>>         <option value="">{{ "Select state" | trans }}</option>
>>     </select>
>>
>> The idea behind this is: when I change any country I should populate the
>> `states` with new values coming from second directive but `$watch` is not
>> listening since second select never is populated, where is my mistake?
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "AngularJS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to