点击不会从模板中触发
在AngularJS中,可以从模板中调用方法,而无需指令或routeProvider来绑定范围?
我的具体问题是我的主控制器(AppCtrl)位于我的索引页面的主体上。 在索引上,我使用一个ngView根据路由引入模板。 除默认模板外,每个RouteProvider都有自己的控制器。 我认为,由于范围继承,我可以使用从模板AppCtrl定义的方法,但试图做一个简单的警报或console.log不会注册任何东西。 我知道$范围正在进入模板,因为我的数据正确显示。
这似乎是一个$范围的问题,但我不知道如何解决它。 我是否需要创建一个指令来明确绑定它们?
的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
我似乎找到了我的问题的根源。 如上所述,使用函数确实有效。 当我回去解决我的具体问题时,该功能再次拒绝工作。 原来,这不是一个范围问题,而是一个绑定问题。 我给出的例子并不准确,但确实帮助我隔离了这个问题。 我会证明:
<!-- alert fires, tries to find '#' in location, binded values do not update -->
<a href="#" ng-click="addOne()">Add 1</a>
<!-- key binding does not update -->
<a href="#" ng-click="key = key+1" ng-init="key=0">Add 1</a>
<!-- key updates -->
<a ng-click="key = key+1" ng-init="key=0">Add 1</a>
无论出于何种原因,包括href都阻止了绑定值的更新。 有谁知道是否有可用作解决方法的“preventDefault”,以便可以包含hrefs进行验证? 看起来这是一个错误或ng-click只用于按钮。
链接地址: http://www.djcxy.com/p/30971.html上一篇: click doesn't fire from within template
下一篇: Colour difference in plot between normal variable and factor variable