点击不会从模板中触发

在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”,以便可以包含h​​refs进行验证? 看起来这是一个错误或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