angularjs – ng-click不会从模板中触发
发布时间:2020-12-17 17:12:44 所属栏目:安全 来源:网络整理
导读:在AngularJS中,可以从模板中调用方法而不使用指令或routeProvider来绑定范围吗? 我的具体问题是我的主控制器(AppCtrl)位于我的索引页面的主体上.在索引上我使用ngView根据路由提取模板.除默认模板外,每个routeProvider都有自己的控制器.我假设由于范围继承,
在AngularJS中,可以从模板中调用方法而不使用指令或routeProvider来绑定范围吗?
我的具体问题是我的主控制器(AppCtrl)位于我的索引页面的主体上.在索引上我使用ngView根据路由提取模板.除默认模板外,每个routeProvider都有自己的控制器.我假设由于范围继承,我可以使用模板中的AppCtrl定义的方法,但尝试只做一个简单的警报或console.log不注册任何东西.我知道$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 解决方法
我好像找到了问题的根源.如上所述,使用函数确实有效.当我回去解决我的具体问题时,该功能再次拒绝工作.事实证明,这不是范围问题,而是一个绑定问题.我给出的例子不准确,但确实帮我隔离了问题.我会证明:
<!-- 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进行验证?似乎这是一个bug或ng-click只是用于按钮. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |