2015-05-14 13 views
65

To jest kontrolerem głównym szablonu:dyrektywa angularjs metoda elementów wiążących - TypeError: nie można użyć „w” operatora, aby szukać „functionName” w 1

app.controller('OverviewCtrl', ['$scope', '$location', '$routeParams', 'websiteService', 'helperService', function($scope, $location, $routeParams, websiteService, helperService) { 
    ...  
    $scope.editWebsite = function(id) { 
     $location.path('/websites/edit/' + id); 
    }; 
}]); 

Jest dyrektywy:

app.directive('wdaWebsitesOverview', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      heading: '=', 
      websites: '=', 
      editWebsite: '&' 
     }, 
     templateUrl: 'views/websites-overview.html' 
    } 
}); 

ten sposób dyrektywa jest stosowana w głównym szablonie:

<wda-websites-overview heading="'All websites'" websites="websites" edit-website="editWebsite(id)"></wda-websites-overview> 

i jest to metoda nazywa fr om dyrektywa szablon (www-overview.html):

<td data-ng-click="editWebsite(website.id)">EDIT</td> 

PYTANIE: Kiedy EDIT powoduje wyświetlenie tego błędu w konsoli:

TypeError: Cannot use 'in' operator to search for 'editWebsite' in 1

Czy ktoś wie, co się tutaj dzieje?

Odpowiedz

137

Ponieważ zdefiniowano powiązanie wyrażenia (&), należy wyraźnie wywołać je za pomocą JSON zawierającego id, jeśli chcesz powiązać go w kodzie HTML jako edit-website="editWebsite(id)".

Rzeczywiście, kątowe potrzeba, aby zrozumieć, co to id jest w HTML, a ponieważ nie jest częścią zakresu, trzeba dodać to, co nazywa się „mieszkańcami” na wezwanie, wykonując:

data-ng-click="editWebsite({id: website.id})" 

lub alternatywnie:

data-ng-click="onClick(website.id)" 

z kodu kontroler/link:

$scope.onClick = function(id) { 
    // Ad "id" to the locals of "editWebsite" 
    $scope.editWebsite({id: id}); 
} 

Jest to udokumentowane tutaj, spojrzeć na przykład z udziałem "close({message: 'closing for now'})"

https://docs.angularjs.org/guide/directive

+7

Dzięki za odpowiedź i za wskazanie dokładnej lokalizacji na dokumentacji, to było niewiarygodne pomocne! –

+0

@floribon Wiem, że to trochę staro, ale czy masz przykład maszynopisu do wywołania zwrotnego? – tcrite

+0

To naprawdę przydatne, dzięki. –

Powiązane problemy