The style guide is nice, you will learn a lot from it. One thing *I *don't 
agree with is the 'vm' as you have below. Just do this:
var settings = this;
settings.data = ...

Then use the same in your markup: ng-controller="SettingsController as 
settings".
Benefits: instant recognition both in markup and in your code. I guess the 
'vm' part is meant for those with a KnockoutJS background.

On Thursday, 11 December 2014 19:21:04 UTC+1, Greg LBD wrote:
>
> OK I checked the styleguide and i see what you mean by over complicating 
> it.
>
> New code.
>
> function SettingsController($log, ModalService, SettingsModel, $translate, 
> $filter){
>     var sc_vm = this;
>     sc_vm.data = SettingsModel.getData();
>     sc_vm.settings =  SettingsModel.settings();
>     sc_vm.applySettings = false;
>     sc_vm.open = function() {
>         var items = [{item: 'item1'}, {item: 'item2'}, {item: 'item3'}];
>         var modalOptions = {
>             closeButtonText: 'Cancel',
>             actionButtonText: 'OK',
>             headerText: $filter('translate')('SETTINGS_MODAL_HEADER_TEXT'),
>             bodyText: items,
>
>             //optional - if you use this option feel free to
>             //add more properties to work with your custom template
>             template: 'partials/modals/settings.html'
>         }
>         ModalService.showModal({}, modalOptions).then(function (result) {
>             $log.log('apply settings ', sc_vm, sc_vm.applySettings);
>
>             // TODO: Implement proper settings model which can be restored on 
> Cancel
>             if(result.id == 'cancel') {
>                 // TODO: reset any changed values to original state
>                 result.applySettings = false;
>             }
>
>             // Fired only on OK && settings have changed
>             if(result.id == 'ok' && result.custom.apply) {
>                 
>                 $log.log('hello', SettingsModel.settings().language.code)
>                 $translate.use(SettingsModel.settings().language.code);
>             }
>             // $log.log(result);
>         });
>     };
>     sc_vm.updateSettings = function() {
>         sc_vm.applySettings = true;
>         $log.log(sc_vm);
>         ModalService.setCustomOptions({apply: sc_vm.applySettings});
>     }
> };
>
>
> i think this is better - correct?
>
> thanks
>
> Greg
>
>
> On Wednesday, December 10, 2014 12:00:55 AM UTC-8, Sander Elias wrote:
>>
>> Hi Greg,
>>
>> First of all, read trough the recommend style-guide 
>> <https://github.com/johnpapa/angularjs-styleguide>. It will make quite a 
>> few things more clear, and it will also explain the why's. You don't have 
>> to follow the guide verbatim, but it will get you on the right track.
>>
>>> 1. what is the right/better approach
>>>
>> controllerAs is the "right" approach
>>  
>>
>>> 2. Is there another way to inject using controllerAs
>>>
>> Yes, but stop doing it by hand, use ng-annotate, there are vesrions for 
>> both grunt and gulp. (You need a build tool anyway for a larger build!)
>>  
>>
>>> 3. Is there a performance difference and a good way to test this?
>>>
>> No, however, in building a larger system, the controllerAs would probably 
>> be faster, as its inheritance chain is way shorter then the $scope chain.
>>  
>>
>>>
>>> angular.module('sdt.settingsctrl', [])
>>>  .controller('SettingsCtrl', SettingsCtrl);
>>>
>>> SettingsCtrl.$inject= ['$log', 'ModalService', 'SettingsModel'];
>>>
>>> function SettingsCtrl($log, ModalService, SettingsModel){
>>>     angular.extend(this, {
>>>         data: SettingsModel.getData(),
>>>         settings: SettingsModel.settings(),
>>>         open:  function() {
>>>             var items = [{item: 'item1'}, {item: 'item2'}, {item: 'item3'}];
>>>             var modalOptions = {
>>>                 closeButtonText: 'Cancel',
>>>                 actionButtonText: 'OK',
>>>                 headerText: 'Adjust your settings',
>>>                 bodyText: items,
>>>                 result: this.callBack(),
>>>
>>>                 //optional - if you use this option feel free to
>>>                 //add more properties to work with your custom template
>>>                 template: 'partials/modals/settings.html'
>>>             }
>>>
>>>
>>>             ModalService.showModal({}, modalOptions).then(function (result) 
>>> {
>>>                 $log.log(result);
>>>             })
>>>         },
>>>         callBack: function() {
>>>             return SettingsModel.settings();
>>>         }
>>>     })
>>>
>>> };
>>>
>>>
>>>  
>> You really should look over the styleguide, you are making it way more 
>> complex then needed!
>>
>> Regards
>> Sander 
>>
>

-- 
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