2014-12-06 50 views
1

ngView的新功能,我寫了一些與關於ngView的示例代碼有點不同的代碼。通常,操作ngView的URL不在其中,而在我的代碼中,鏈接在ngView模板中。問題是當我點擊下面的ShowOrder鏈接時,我得到一個TypeError,函數$ scope.show()沒有被定義。我點擊鏈接之前和之後都打印了$ scope對象。我的嫌疑人得到確認。在點擊$ scope之前定義了Show()函數之後,隨後$ scope變成裸體,就像剛剛生成的角度一樣,沒有任何自定義屬性。

請幫我找出我做錯了什麼地方,或許有點在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()}} 
+1

首先它應該是'angular.module('sampleApp',['ngRoute'])''。 – dfsq 2014-12-06 09:38:38

+0

在我的真實代碼中ngRoute被添加爲依賴關係 – 2014-12-06 10:57:34

+0

因此,如果我正確地理解了您的意思......您手動轉到/ ShowOrder路由,那麼您單擊該鏈接並且希望再次加載相同的視圖?如果你只想觸發show(),你爲什麼不用ng-click來觸發它? – Lihini 2014-12-06 15:50:44

回答

0

此致說

$scope.show = function {console.log("here")}` 

應該

$scope.show = function() {console.log("here");} 
0

我對解決我的問題那種迷迷糊糊。每當我點擊一個href改變路由時,相應的控制器就會重新創建。看來Angular首先創建一個新的$ scope.prototype,然後嘗試使用HTML中的指令進行綁定。當它符合Show()時,Angular聲明它是未定義的。最後,我接受@Lizzie的建議,使用ng-click讓我的生活更輕鬆。

相關問題