Может ли свойство локальной области видимости и переданное значение атрибута использоваться взаимозаменяемо в директивах angularjs с изолированной областью действия
Я слежу за областью изоляции Дэна Валина с параметрами функции. У меня есть пара двусмысленностей в этой статье. Поскольку на этом сайте нет ответа, я выбрал переполнение стека. Я новичок в мире javascript/angular, ответ в деталях приветствуется.
- Когда я использую
datasource
код выполняется хорошо. Но согласно статье, если я используюcustomers
тогда я получаю исключение не могу прочитать свойство push неопределенного. - Когда я вижу область в chrome с выбранной пользовательской директивой, я не вижу
datasource
иadd
вместо этого я вижуcustomers
а такжеaddCustomer
, Почемуdatasource
а такжеadd
недоступно в изолированном объеме? Если я увижу детскую прицел, то смогу увидетьdatasource
иadd
в изолирующих привязках. Что это значит? - Может ли контроллер (определенный внутри директивы) получить доступ к изолированной области? Как?
- Как пользоваться
controllerAs
в директиве контроллера.
Вот исходный код.
var app=angular.module('customermodule', []);
app.controller('CustomersController', ['$scope', function ($scope) {
var counter = 0;
$scope.customer = {
name: 'David',
street: '1234 Anywhere St.'
};
$scope.customers = [];
$scope.addCustomer = function (name) {
counter++;
$scope.customers.push({
name: (name) ? name : 'New Customer' + counter,
street: counter + ' Cedar Point St.'
});
};
$scope.changeData = function () {
counter++;
$scope.customer = {
name: 'James',
street: counter + ' Cedar Point St.'
};
};
}]);
app.directive('isolatedScopeWithController', function () {
return {
restrict: 'EA',
scope: {
datasource: '=',
add: '&',
},
controller: function ($scope) {
$scope.addCustomer = function () {
//Call external scope's function
var name = 'New Customer Added by Directive';
$scope.add({ name: name });
//I get exception here if i use customers here. Instead If I use datasource, it works well.
$scope.customers.push({
name: name
});
};
},
template: '<button ng-click="addCustomer()">Add Customer</button>
<ul>' +
'<li ng-repeat="cust in customers">{{ cust.name }}</li></ul>'
};
});
Я хочу знать, пропускаю ли я что-нибудь в этом случае, или статья является непреднамеренной ошибкой.