ngView的新手,我写了一些与ngView示例代码略有不同的代码。通常,操纵ngView的URL不在其中,而在我的代码中,链接在ngView模板中。问题是当我点击下面的ShowOrder链接时,我得到一个TypeError,函数$ scope.show()没有定义。我在点击链接之前和之后都打印了$ scope对象。我的嫌犯已经确认了。在单击$ scope之前定义了函数Show(),之后$ scope变为裸,因为它刚刚生成angular,没有任何自定义属性。
请帮助我找出我做错的地方,也许还有一点关于如何加载ngView,在范围内销毁。感谢。
这是主要的HTML代码:
<body ng-app="sampleApp" ng-controller="rootCtrl">
<div ng-view></div>
</body>
App.js:
var sampleApp = angular.module('sampleApp', ['ngRoute']);
sampleApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/ShowOrder', {
templateUrl: 'templates/show_order.html',
controller: 'ShowOrderController'
});
}]);
sampleApp.controller('ShowOrderController', function($scope) {
$scope.show = function {console.log("here")}
});
模板代码:
<h2>Show Orders</h2>
<a href="#ShowOrder"> Show Order </a>
{{show()}}
答案 0 :(得分:0)
你说
$scope.show = function {console.log("here")}`
应该是
$scope.show = function() {console.log("here");}
答案 1 :(得分:0)
我偶然发现了解决问题的方法。每次单击href更改路径时,都会重新创建相应的控制器。似乎Angular首先创建一个新的$ scope.prototype,然后尝试用HTML中的指令进行绑定。当它遇到Show()时,Angular宣称它是未定义的。最后,我接受@Lizzie的建议,使用ng-click让我的生活更轻松。