大家好我正在使用angulrajs
使用服务从一个controller
传递一个值到另一个控制器它工作正常但我需要的是controller 2
中的服务值更改我得到服务值在一个范围内,当范围值改变时,我需要触发函数,当refresh
值改变时,它被称为service
函数,我需要在这里调用刷新函数我的小提琴
答案 0 :(得分:3)
您可以$watch
value.storeObject
$scope.$watch('value.storedObject', function(newVal) {
if(newVal !== '') {
refresh()
}
})
。虽然它不是最好的做法,但它适合这种功能。
refresh
working fiddle(打开控制台查看cordovan-plugin-fcm
函数记录)
答案 1 :(得分:1)
您可以尝试使用角度默认$emit
,$broadcast
,或尝试在自己的服务中执行2个简单的功能
angular.module('app').factory('StoreService', function() {
var listeners = {};
var emit = function(name, val) {
if(listeners[name]) {
listeners[name](val)
}
}
var on = function(name, callback) {
listeners[name] = callback;
}
return {
emit: emit,
on: on,
storedObject: ''
};
});
JSFiddle example
JSFiddle example $watch
JSFiddle example ng-change
更好,因为您可以轻松使用debounce
答案 2 :(得分:0)
你可以使用广播功能 请检查此SO链接以查找相关答案
How to call a function from another controller in angularjs?
app.controller('One', ['$scope', '$rootScope'
function($scope) {
$rootScope.$on("CallParentMethod", function(){
$scope.parentmethod();
});
$scope.parentmethod = function() {
// task
}
}
]);
app.controller('two', ['$scope', '$rootScope'
function($scope) {
$scope.childmethod = function() {
$rootScope.$emit("CallParentMethod", {});
}
}
]);