W zgłoszeniu Material Design mdDialog documentation zauważyłem, że minął zakres (bez przedrostka z dolara) do DialogController
w dolnej części.
(function(angular, undefined){
"use strict";
angular
.module('demoApp', ['ngMaterial'])
.controller('AppCtrl', AppController);
function AppController($scope, $mdDialog) {
var alert;
$scope.showAlert = showAlert;
$scope.showDialog = showDialog;
$scope.items = [1, 2, 3];
// Internal method
function showAlert() {
alert = $mdDialog.alert({
title: 'Attention',
content: 'This is an example of how easy dialogs can be!',
ok: 'Close'
});
$mdDialog
.show(alert)
.finally(function() {
alert = undefined;
});
}
function showDialog($event) {
var parentEl = angular.element(document.body);
$mdDialog.show({
parent: parentEl,
targetEvent: $event,
template:
'<md-dialog aria-label="List dialog">' +
' <md-dialog-content>'+
' <md-list>'+
' <md-list-item ng-repeat="item in items">'+
' <p>Number {{item}}</p>' +
' '+
' </md-list-item></md-list>'+
' </md-dialog-content>' +
' <div class="md-actions">' +
' <md-button ng-click="closeDialog()" class="md-primary">' +
' Close Dialog' +
' </md-button>' +
' </div>' +
'</md-dialog>',
locals: {
items: $scope.items
},
controller: DialogController
});
function DialogController(scope, $mdDialog, items) {
scope.items = items;
scope.closeDialog = function() {
$mdDialog.hide();
}
}
}
})(angular);
Czytałem, że $
jest konwencją nazewnictwa i dobry sposób, aby zmienne pewien, że nie dostają nadpisane. Dlaczego ten kod nie stosuje się do tej konwencji? Czy w tym kontekście, skąd wiemy, kiedy używać $
, czy nie, i jakie jest znaczenie? Wierzę, że w tym przypadku musi to być coś więcej niż konwencja nazewnicza, lub autorzy zdecydowaliby się użyć $scope
dla celów spójności.
UWAGA: zdaję sobie sprawę z różnicy między $scope
i scope
w funkcjach łączenia, gdzie scope
wskazuje stały zestaw parametrów. Nie sądzę, że dlatego w tym kontekście użyto scope
, ale daj mi znać, jeśli się mylę.
Dzięki!
To prawda @Freelancer. Funkcja DialogController jest normalną funkcją, a nie regulatorem kątowym lub regulatorem kątowym. zakres to tylko nazwa nadana temu argumentowi. To nie jest wstrzykiwany zakres $. –
Dzięki za spostrzeżenia-Chociaż jest wymieniony jako kontroler za pośrednictwem $ mdDialog.show ({controller: DialogController}); ? –
I, erm, jeśli to nie jest kontroler - co dokładnie robi? :-) Dzięki. –