Может ли локальное свойство scope и переданное значение атрибута использоваться взаимозаменяемо в директивах angularjs с областью выделения

Я слежу за областью выделения Дан Вахлин с параметрами функции. У меня есть пара двусмысленности в этой статье. Поскольку на этом сайте нет ответа, я выбрал переполнение стека. Я новичок в javascript/угловом мире, ответ в деталях очень приветствуется.

  1. Когда я использую datasource, код выполняется хорошо. Но в соответствии с этой статьей, если я использую customers то я получаю исключение, не могу прочитать push свойства undefined.
  2. Когда я вижу область в хроме с выбранной пользовательской директивой, я не вижу datasource и add, вместо этого я вижу customers и addCustomer. Почему datasource и add недоступны в изолированной области?. Если я вижу childscope, то я могу увидеть datasource и add в привязки изоляции. Что это значит?
  3. Может ли область управления (определенная внутри директивы) получить доступ к области изоляции? Как?
  4. Как использовать 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 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>'
  };
 });

Я хочу знать, если я упускаю что-либо в этом случае, или статья непреднамеренно ошибочна.

0
02 авг. '18 в 10:56
источник поделиться

На данный вопрос пока никто не ответил

Посмотрите похожие вопросы:

Посмотрите другие вопросы по меткам или Задайте вопрос