当我在html中调用{{callData}}
时,$scope.callData
的结果无法正常工作。
也许我的代码错了?
请帮我解决一下
phonecatControllers.controller('PhoneListCtrl',
['$scope', 'Phone', function($scope, Phone){
$scope.phones = Phone.query();
$scope.sortir = 'age';
$scope.getCount = function(){
return $scope.phones.length;
};
$scope.$emit('showData', {
showData: $scope.getCount
});
}]);
phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', 'Phone',
function($scope, $routeParams, Phone) {
$scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
$scope.mainImageUrl = phone.images[0];
});
$scope.setImage = function(imageUrl) {
$scope.mainImageUrl = imageUrl;
}
}]);
phonecatControllers.controller('JumlahCtrl', ['$scope',
function($scope) {
$scope.$on('showData', function(event, obj){
console.log(obj);
$scope.callData = function(event){
obj.showData();
};
})
}]);

<div>
<span>jumlah : {{callData()}} </span>
</div>
&#13;
为什么$scope.callData
的结果无法弹出
答案 0 :(得分:1)
$scope
仅限于自己的控制器。您需要在$rootScope
级别发出。尝试更改
$scope.$emit('showData', {
showData: $scope.getCount
});
到
$rootScope.$broadcast('showData', {
showData: $scope.getCount
});
答案 1 :(得分:0)
如果可以,我会对这个问题发表评论,但在您发布的示例中,您没有在div上声明任何ng-controller指令。所以html根本不知道任何角度函数。
<div ng-controller="MyCtrl">
<span>jumlah : {{callData()}} </span>
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.callData = function() {
return 123;
}
}
这是一个小jsFiddle来演示:http://jsfiddle.net/5uu2cq6j/