2014-03-28 59 views
0

我在我的應用程序中使用Angular Framework。如何在我的情況下動態更新數據?

我有一個設置這樣

我app.js

var app = angular.module('myApp', ['ngRoute','myApp.controller'). 
    config(['$routeProvider', function($routeProvider) { 
     $routeProvider 
      .when('/test', { 
       templateUrl: 'template/main.html', 
       controller: 'mCtrl' 
      }) 
      .otherwise({redirectTo: '/te'}); 
    }]); 

測試controller.js

var controllers = angular.module('myApp.controller', ['ui.bootstrap']). 
    controller('mCtrl', ['$scope', function ($scope) { 
     ..other codess.... 
     //get data after a click.... 
     $scope.clickme = function(){ 
      $scope.mainData = data //getting new data after an click event is fired 
      //broadcast broadcastData event 
      $scope.$broadcast('broadcastData', $scope); 
     } 
    }]). 
    controller('NCtrl', ['$scope', function ($scope) { 
     $scope.test = 'test data here' 

     //getting data from broadcastData event 
     $scope.$on('broadcastData', function(event, Data){ 
      $scope.test = Data.test //Data.test is a string called 'after click' 
     })  
}]); 

的index.html

<div ng-controller='mCtrl'> 
     <div ng-click='clickme()'> click me</div> 
     <ng-include src="'template/main.html'"></ng-include> 
    </div> 

main.html中

<div ng-controller='NCtrl'> 
    {{mainData}} 
/div> 

我的問題是,mainData顯示'test data here'罰款頁面第一次加載。但是,在我點擊div並觸發點擊事件後。 mainData不更新爲'after click'。看來$scope.$on不會更新html mainData ......我在這個問題上花了很多時間。任何人都可以幫助我嗎?非常感謝!

+0

請顯示'mCtrl'中定義的數據的位置? –

回答

0

我相信你有,因爲broadcast分派事件名稱向下到所有子範圍使用$rootScope而不是$scopemCtrl播出。

我不認爲使用ng-include將創建一個超出控制器範圍的子範圍。它創建了一個新的範圍,使其成爲mCtrl's範圍的兄弟。

相關問題