Javascript 观察angularjs中的值
如何在angularjs中观察ng模型的数组值我创建了fiddle,但不起作用,请看一看并提出建议 谢谢Javascript 观察angularjs中的值,javascript,angularjs,Javascript,Angularjs,如何在angularjs中观察ng模型的数组值我创建了fiddle,但不起作用,请看一看并提出建议 谢谢 <div ng-app ng-controller="ParentCtrl"> <div ng-controller="ChildCtrl"> <table> <tr ng-repeat="user in profiles track by $index"> &l
<div ng-app ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
<table>
<tr ng-repeat="user in profiles track by $index">
<td>
<input
type="text"
name="parktime_{{user.user_id}}"
ng-model="orderItems[user.user_id].parktime"
>
</td>
</tr>
</table>
</div>
</div>
function ParentCtrl($scope) {
}
function ChildCtrl($scope) {
$scope.parkOptions = {};
$scope.profiles = [
{user_id: '01', park_name: 'England Park'},
{user_id: '02', park_name: 'France Park'}
];
$scope.orderItems = {};
$scope.orderItems.parktime = "Test";
$scope.$watch('orderItems[profiles.user_id].parktime', function(newVal, oldVal){
console.log(newVal);
})
}
函数ParentCtrl($scope){
}
函数ChildCtrl($scope){
$scope.parkOptions={};
$scope.profiles=[
{用户id:'01',公园名称:'England park'},
{用户id:'02',公园名称:'France park'}
];
$scope.orderItems={};
$scope.orderItems.parktime=“测试”;
$scope.$watch('orderItems[profiles.user_id].parktime',函数(newVal,oldVal){
console.log(newVal);
})
}
您正在尝试访问不存在的索引。profiles是一个对象数组,我认为profiles.user\u id index上没有任何可用的内容。另外,我认为orderItems[profiles.user_id]不会工作,因为该索引也不存在。您正在尝试访问不存在的索引。profiles是一个对象数组,我认为profiles.user\u id index上没有任何可用的内容。此外,我认为orderItems[profiles.user_id]不会起作用,因为该索引也不存在。我建议您改用它。你不能用这种方式观看,而是观看一个单一的属性 我还更新了您的模型以供使用。这是您应该小心使用的,但在您的情况下,您需要在
orderItems
对象的每个位置定义一个键。如果您总是静态地分配这些,我建议您遍历它们一次,然后以这种方式创建一个键
HTML
<input type="text" name="parktime_{{user.user_id}}"
ng-init="orderItems[user.user_id] = {}"
ng-model="orderItems[user.user_id].parktime"
ng-change="onChange(user.user_id)">
我建议你改用。你不能用这种方式观看,而是观看一个单一的属性
我还更新了您的模型以供使用。这是您应该小心使用的,但在您的情况下,您需要在orderItems
对象的每个位置定义一个键。如果您总是静态地分配这些,我建议您遍历它们一次,然后以这种方式创建一个键
HTML
<input type="text" name="parktime_{{user.user_id}}"
ng-init="orderItems[user.user_id] = {}"
ng-model="orderItems[user.user_id].parktime"
ng-change="onChange(user.user_id)">
我在文本框中有datetime选择器,如果我在小提琴中使用它,它不会向我显示控制台,它说安全未定义,你能用你的实际操作更新你的示例吗?我们只能根据得到的回答。如果您使用jQuery库来更改该值,这就是Angular不知道发生了什么的原因。您也没有在控制器中声明
$scope.orderItems
。是的,这是正确的,但我想看看是否在模型中找到了更新的新值,因为我没有键入任何内容,我只选择了日期和时间。对此我很抱歉。但是我知道您的时间,如果您能使用Angular.forEach(用户信息,函数(用户,键){$scope.$watch('[orderItems[user.user\u id].flight\u arrival\u time,orderItems[user.user\u id].Extairation\u flight\u time]',函数(newVal,oldVal){if(newVal!==oldVal&&typeof oldVal!='undefined'){var orderItems={'order_id':$scope.order.order_id,'flg_time':newVal[0],'dep_time':newVal[1],}$scope.saveOrder(user,orderItems);}},true);});我在文本框中有datetime选择器,如果我在小提琴中使用它,它不会显示控制台,它说安全未定义。你能用你实际做的事情更新你的例子吗?我们只能根据给出的答案来回答。如果你使用jQuery库来更改值,这就是Angular不知道发生了什么的原因。在t例如,您没有添加ng init,因此模型未定义。您也没有在控制器中声明$scope.orderItems
。是的,这是正确的,但我想看看是否在模型中找到了更新的新值,因为我没有键入任何内容,我只选择了日期和时间。对此表示抱歉。但我已经通知了您的时间,请指导我f您可以使用Angular.forEach(userInfo,function(user,key){$scope.$watch('[orderItems[user.user\u id].flight\u arrival\u time,orderItems[user.user\u id]{'order_id':$scope.order.order_id,'flg_time':newVal[0],'dep_time':newVal[1],}$scope.saveOrder(user,orderItems);}},true);});