我正在关注Dan Wahlin isolate scope with function parameters。我在这篇文章中有一些含糊之处。由于该站点没有响应,因此我选择了堆栈溢出。我是javascript / angular世界的新手,欢迎提供详细信息。
datasource
时,代码执行良好。但是根据这篇文章,如果我使用customers
,则会得到无法读取未定义属性推送的异常。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>'
};
});
我想知道在这种情况下我是否遗漏了任何东西,或者文章是意外的错误。