我正在用Angular自學,我正在爲此編寫一個小應用程序。我遵循John Papa的Angular Style Guide,並使用控制器而不是$ scope(Y030)。
問題是當我在ng-view模板中使用類似ng-click =「vm.doSomething()」的東西時,事件不會被觸發。沒有來自控制檯的消息。如果我使用$範圍,則該應用程序有效。
要使其工作,只需將「greet.configure()」替換爲「configure()」即可。
任何提示?
完整的應用程序可以在這裏找到:
https://github.com/ajkret/spring-boot-sample/tree/controllerAs-ngView-ngClick-problem
下面是路由代碼:
(function() {
'use strict';
angular.module('app').config([ '$routeProvider', routing ]);
function routing($routeProvider) {
$routeProvider.when('/greet', {
templateUrl : 'app/components/greet/greet.html',
controller : 'GreetingCtrl',
controllerAs : 'greet'
}).when('/config', {
templateUrl : 'app/components/config/config.html',
controller : 'ConfigCtrl',
controllerAs : 'config'
}).otherwise({
redirectTo : '/greet'
});
}
})();
這裏是模板:
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
<div class="panel panel-default">
<div class="panel-heading">Presentation</div>
<div class="panel-body">Here is the message of the day</div>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
<div class="panel panel-default">
<div class="panel-heading">Result from Server</div>
<div class="panel-body">
<h3>{{greet.message}}</h3>
<button type="button" class="btn btn-primary" ng-click="greet.configure()">Configure</button>
</div>
</div>
</div>
</div>
這裏是控制器:
(function() {
'use strict';
angular.module('app').controller('GreetingCtrl', GreetController);
GreetController.$inject = ['GreetingService','$location','$scope'];
function GreetController($service, $location, $scope) {
var controller = this;
var message;
function get() {
$service.get(function(greet) {
controller.message = greet.message;
});
}
function configure() {
$location.url('config');
}
$scope.configure = configure;
// Bootstrap
get();
}
})();
這裏是完整的應用程序https://github.com/ajkret/spring-boot-sample – ajkret
有時我在Chrome中遇到緩存問題。我更喜歡使用Firefox。 – andreshg112