2014-03-28 61 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范围的兄弟。

相关问题