$观察 JSON Angularjs 中的对象
$watch for objects in JSON Angularjs
我想在 json 对象的特定部分的指令中创建一个 $watch,但它似乎不接受语法(没有出现错误,但它永远不会进入手表)
link: function (scope, element) {
scope.JsonObject={
profs:{
prof1:[{
name:example1a,
id:example1b
}],
prof2:[{
name:example2a,
id:example2b
}]
}
}
scope.teachers=scope.JsonObject['profs']
//until here all ok
for ( var teacher in scope.teachers){
//stuff to do
console.log("creating watch of " + teacher);
scope.$watch('teachers[teacher]', function() { //here seems to be the problem (it doesnt seem to accept JsonObject.teacher)
//stuff to do
}, true);
}
字符串没有插入到对象中。
function getTeacher(teacher) {
return $scope.teachers[teacher]
}
scope.$watch(getTeacher(teacher), function() {
//Do stuff
}, true);
之前,teachers[teacher]
是 undefined
因为没有 ' '
(引号)
teacher
.
附近
for (var teacher in $scope.teachers){
$scope.$watch("teachers['"+ teacher +"']", function(newValue, oldValue) {
alert("changed");
}, true);
}
您不能在 $watch 内使用外部值,特别是在循环内。把它想象成一个间隔,如果你把一个间隔或一个超时放在一个循环里,在间隔之外处理的变量的值(在这种情况下是'$scope.teachers[teacher]')将无法从内部访问,或者至少将采用最后一次迭代值。
我想在 json 对象的特定部分的指令中创建一个 $watch,但它似乎不接受语法(没有出现错误,但它永远不会进入手表)
link: function (scope, element) {
scope.JsonObject={
profs:{
prof1:[{
name:example1a,
id:example1b
}],
prof2:[{
name:example2a,
id:example2b
}]
}
}
scope.teachers=scope.JsonObject['profs']
//until here all ok
for ( var teacher in scope.teachers){
//stuff to do
console.log("creating watch of " + teacher);
scope.$watch('teachers[teacher]', function() { //here seems to be the problem (it doesnt seem to accept JsonObject.teacher)
//stuff to do
}, true);
}
字符串没有插入到对象中。
function getTeacher(teacher) {
return $scope.teachers[teacher]
}
scope.$watch(getTeacher(teacher), function() {
//Do stuff
}, true);
之前,teachers[teacher]
是 undefined
因为没有 ' '
(引号)
teacher
.
for (var teacher in $scope.teachers){
$scope.$watch("teachers['"+ teacher +"']", function(newValue, oldValue) {
alert("changed");
}, true);
}
您不能在 $watch 内使用外部值,特别是在循环内。把它想象成一个间隔,如果你把一个间隔或一个超时放在一个循环里,在间隔之外处理的变量的值(在这种情况下是'$scope.teachers[teacher]')将无法从内部访问,或者至少将采用最后一次迭代值。