angularjs $watch 无法正常工作
angularjs $watch not working in function
我在使用 $watch.When 时遇到问题 我在下面的函数中使用 $watch,它在没有任何 problems.But 的情况下工作它不会影响 当我在点击函数中使用它时。
我在等你的建议..
$scope.d = 1;
var mark = L.marker(L.latLng(veri.Konum.lat, veri.Konum.lon), { title: veri.Name, data: veri, content: "" });
mark.addTo(markersLayer);
mark.on('click', onClick);
function onClick(e) {
$scope.$watch("d", function () {
console.log("12313sadad");
});
}
试试这个:
function onClick(e) {
if( !$scope.isWatched ) {
$scope.$watch("d", function () {
console.log("12313sadad");
$scope.isWatched = true;
});
}
}
您将 watch 放入一个函数中,该函数未被任何 angular 组件触发,因此 angularjs 不知道您在该函数中做了什么。
您应该使用某些 angular 组件(如 ng-click、ng-change...)触发该函数,或者您应该在设置监视后调用 $scope.$apply() (它不是虽然推荐,但如果没有其他选择,你应该这样做)...
试试这个我不太确定但我想它会起作用
scope.$watch("d", function (data) {
console.log("data ", data);
})
首先是
$scope.$watch 不是在需要时执行的部分,它必须编译为指令加载或控制器加载,如果你在函数中编写它,它最初不会被编译,所以每当你调用一个函数时尝试执行$scope.$watch 在那一点上你正在尝试监视某些东西("b")并且你的期望是从现在开始它会开始监视那个变量但这不是监视的目的它是你需要的一直监视 "d" 如果您想在需要时执行某些操作,那么监视是不正确的方法,您可以简单地编写 function
试试这个。
$scope.$watch(function() {
return variableToWatch;
}, function(newVal, oldVal) {
if (newVal !== oldVal) {
//custom logic goes here......
}
}, true);
我在使用 $watch.When 时遇到问题 我在下面的函数中使用 $watch,它在没有任何 problems.But 的情况下工作它不会影响 当我在点击函数中使用它时。 我在等你的建议..
$scope.d = 1;
var mark = L.marker(L.latLng(veri.Konum.lat, veri.Konum.lon), { title: veri.Name, data: veri, content: "" });
mark.addTo(markersLayer);
mark.on('click', onClick);
function onClick(e) {
$scope.$watch("d", function () {
console.log("12313sadad");
});
}
试试这个:
function onClick(e) {
if( !$scope.isWatched ) {
$scope.$watch("d", function () {
console.log("12313sadad");
$scope.isWatched = true;
});
}
}
您将 watch 放入一个函数中,该函数未被任何 angular 组件触发,因此 angularjs 不知道您在该函数中做了什么。
您应该使用某些 angular 组件(如 ng-click、ng-change...)触发该函数,或者您应该在设置监视后调用 $scope.$apply() (它不是虽然推荐,但如果没有其他选择,你应该这样做)...
试试这个我不太确定但我想它会起作用
scope.$watch("d", function (data) {
console.log("data ", data);
})
首先是
$scope.$watch 不是在需要时执行的部分,它必须编译为指令加载或控制器加载,如果你在函数中编写它,它最初不会被编译,所以每当你调用一个函数时尝试执行$scope.$watch 在那一点上你正在尝试监视某些东西("b")并且你的期望是从现在开始它会开始监视那个变量但这不是监视的目的它是你需要的一直监视 "d" 如果您想在需要时执行某些操作,那么监视是不正确的方法,您可以简单地编写 function
试试这个。
$scope.$watch(function() {
return variableToWatch;
}, function(newVal, oldVal) {
if (newVal !== oldVal) {
//custom logic goes here......
}
}, true);