$ Olayları tetikleyebilen özel bir javascript nesnesine sahibim. Olay işleyicisindeki açısal $ kapsamına erişmek istiyorum, ancak angular.element (...). Scope() işlevini kullanmanın bir şey olmadığını, çünkü yalnızca sınama amaçlı olduğu için okudum.
Diğer düşüncem denetleyicideki nesnemin üzerindeki tanıtıcıyı kaydetmekti, ancak bu çalışmıyor ($ scope.somevalue ayarlanmış gibi görünüyor, ama $ kapsamının aynı nesne olduğunu düşünmüyorum).
Benzer sorular için Yığın Taşması konusunda birçok yanıt buldum, ancak hepsi yönergeleri kullanıyor gibi görünüyor. Tek istediğim, güncellendiğinde nesneden bir değer elde etmek ve görüntülemek.
İşte denediğim iki yol var.
var myObj = GetMyObjInstance();
// Working, but apparently it's not good practise to call .scope() on an element.
myObj.onUpdated = function(){
console.log("myObj updated");
var v = myObj.getValue();
var controllerDiv = document.getElementById("controller");
var $scope = angular.element(controllerDiv).scope();
$scope.apply(function(){
$scope.someValue = v;
});
}
// Tried to do this, thinking i would get closure on the scope.
angular.module('myApp', []).controller('controller', function($scope){
myObj.onUpdated = function(){
console.log("myObj updated"); // Gets logged to console...
var v = myObj.getValue();
$scope.somevalue = v; // ... but somevalue does not get displayed.
$scope.apply(); // Error, says it's not a function, so maybe this is not the right object?.
}
});
'$ scope.apply()' yerine '$ scope. Yine de, direktifleri ve/veya bileşenleri kullanmaya çalışmalısınız. –
$ scope. $ Watch() 'ı denediniz mi? – nihulus
lütfen console.log (v) 'ye bakın ve kontrol edin. Tamamsa, sadece $ scope.apply(); 'ile $ kapsamını değiştirin. $ Apply();' –