当ngView由其自身内的链接更改时,我的函数将从$ scope中删除

时间:2014-12-06 09:18:31

标签: javascript angularjs

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()}}

2 个答案:

答案 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让我的生活更轻松。