В AngularJS можно вызвать методы из шаблонов без директивы или routeProvider для привязки области?ng-click не запускается из шаблона
Моя особая проблема в том, что мой основной контроллер (AppCtrl) расположен на теле моей индексной страницы. В индексе я использую ngView для вытягивания шаблонов в соответствии с маршрутизацией. Каждый routeProvider имеет свой собственный контроллер, за исключением шаблона по умолчанию. Я предположил, что из-за наследования области я мог бы использовать методы, определенные с помощью AppCtrl из шаблона, но пытаюсь просто сделать простое оповещение или console.log ничего не регистрирует. Я знаю, что $ scope подходит к шаблону, потому что мои данные отображаются правильно.
Это, кажется, проблема с $ scope, но я не уверен, как ее решить. Нужно ли мне создавать директиву, чтобы их явно связывать?
index.html
<body ng-controller="AppCtrl">
<div ng-view></div>
</body>
app.js
var myApp = angular.module('myApp', [])
.config(function($routeProvider) {
.when('/', {
templateUrl: 'partials/list.html'
}),
.when('/info/:id, {
templateUrl: 'partials/info.html'
controller: 'InfoCtrl'
});
});
controllers.js
var controllers = {};
controllers.AppCtrl = function($scope, $location, Factory) {
...
$scope.doSomething = function() {
alert('hello');
};
};
myApp.controller(controllers);
list.html
<a href="#" ng-click="doSomething()">Do Something</a> // no response
попытайтесь добавить его на объект $ rootScope – Ven
Он должен работать. Вот [рабочая скрипка] (http://jsfiddle.net/mrajcok/zcybQ/). –
Каждый раз. Посылая это на час или два, и сегодня это работает. Клянусь, каждый раз, когда я пешу и прошу помочь, все начинает работать самостоятельно. Хорошо, спасибо за ответы. – iamsar