$ scope。$ watch with complex variable

时间:2014-10-23 13:01:34

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我需要$ scope。$观看这样的变量:

$scope.data.localization[$scope.locale].properties[0].value

$ scope.data.localization [$ scope.locale] .properties 是一个对象数组,其中每个对象都有代码和值,我使用这些对来创建动态表单:

<input type="text" ng-repeat="property in $scope.data.localization[$scope.locale].properties" ng-model="property.value" />

现在,只有当另一个文本框有值时,一些文本框必须是可见的,所以基本上我想要$ scope。$观看其中一个值,但它不起作用,$ watch的回调永远不会被触发:< / p>

$scope.$watch("data.localization." + $scope.locale +".properties[0].value", function () {
   //show/hide another texbox if I have a value
});

知道如何实现吗?

编辑:我试过

$scope.$watch("data.localization", function () {
   //show/hide another texbox if I have a value
});

它会触发回调,所以看起来问题是动态属性 $ scope.locale ,但我不知道如何避免这种情况。

问题是,如果我观察整个阵列,我不知道改变了什么值。

2 个答案:

答案 0 :(得分:0)

试试这个:

var myWatcher = "data.localization." + $scope.locale +".properties[0].value";    
$scope.$watch(myWatcher, function () {
   //show/hide another texbox if I have a value
});

答案 1 :(得分:0)

您可以使用手表中的功能返回要观看的值。尝试:

$scope.$watch(function () { return $scope.data.localization[$scope.locale].properties[0].value; } , function () {
   //show/hide another texbox if I have a value
});