Javascript 控制器内的作用域函数不根据视图中的ng模型更新值

Javascript 控制器内的作用域函数不根据视图中的ng模型更新值,javascript,angularjs,Javascript,Angularjs,嗨,我在从ng视图调用的控制器中获得了此函数: productApp.controller('ModalInstanceCtrl', function ($scope, $modalInstance, productFactory, prodId) { $scope.ok = function () { console.log($scope.model_productDescription); $scope.$watch(['model_pro

嗨,我在从ng视图调用的控制器中获得了此函数:

productApp.controller('ModalInstanceCtrl', function ($scope, $modalInstance, productFactory, prodId) {     

$scope.ok = function () {
          console.log($scope.model_productDescription);
          $scope.$watch(['model_productBrand,model_productName,model_productDescription,model_productPrice, model_productStock'], function() {
              var stock = '';
              if($scope.model_productStock) {
                  stock = 'AVAILABLE';
              }else{
                  stock = 'NO STOCK';
              }

              var productObject = {
                      id : prodId,
                      prodBrand : $scope.model_productBrand,
                      prodName : $scope.model_productName,
                      description : $scope.model_productDescription,
                      price : $scope.model_productPrice,
                      prodStock : stock
              }

              productFactory.updateProductById(productObject, function successCallback(data) {
                  // do something here in data
              }, function errorCallback(data, status) {
                  alert(data + ' Failed with error ' + status); 
              }); 
          })     
      };
});
这是modal.htm正文:


&时代;
修改产品
产品品牌
产品类型
价格
$  .00
描述
{{prod.description}}
股票
接近
编辑产品
现在,如果我输入文本区域(例如),然后按ok按钮,它将进入这个功能。现在,既然textarea值已经更改,那么$scope.productDescription值不应该反映出来吗?看起来不是。我认为,无论何时在模型中进行更改,它都会覆盖$scope.model\u name值,我是否应该使用ng change或任何其他指令

尝试添加一块$watch,但也不起作用,有什么建议吗

附言:console.log($scope.model_productDescription);//显示旧的描述,尽管我更改了它


谢谢

最可能的原因是model.html正在创建子作用域。您对模型属性所做的更改是子级的本地更改,并且由于原型继承,无法在父级中看到

您可以尝试在控制器上创建一个对象,并对对象属性进行绑定

$scope.productObject={}

将textarea绑定到

 <textarea id="prod_description" class="form-control" ng-model="productObject.productDescription" cols="70" rows="3">{{prod.description}}</textarea>
{{prod.description}
现在更改将反映在
productObject.productDescription
属性中


还可以浏览此wiki以了解作用域继承是如何工作的

最可能的原因是model.html正在创建子作用域。您对模型属性所做的更改是子级的本地更改,并且由于原型继承,无法在父级中看到

您可以尝试在控制器上创建一个对象,并对对象属性进行绑定

$scope.productObject={}

将textarea绑定到

 <textarea id="prod_description" class="form-control" ng-model="productObject.productDescription" cols="70" rows="3">{{prod.description}}</textarea>
{{prod.description}
现在更改将反映在
productObject.productDescription
属性中


还可以浏览此wiki以了解作用域继承是如何工作的

最可能的原因是model.html正在创建子作用域。您对模型属性所做的更改是子级的本地更改,并且由于原型继承,无法在父级中看到

您可以尝试在控制器上创建一个对象,并对对象属性进行绑定

$scope.productObject={}

将textarea绑定到

 <textarea id="prod_description" class="form-control" ng-model="productObject.productDescription" cols="70" rows="3">{{prod.description}}</textarea>
{{prod.description}
现在更改将反映在
productObject.productDescription
属性中


还可以浏览此wiki以了解作用域继承是如何工作的

最可能的原因是model.html正在创建子作用域。您对模型属性所做的更改是子级的本地更改,并且由于原型继承,无法在父级中看到

您可以尝试在控制器上创建一个对象,并对对象属性进行绑定

$scope.productObject={}

将textarea绑定到

 <textarea id="prod_description" class="form-control" ng-model="productObject.productDescription" cols="70" rows="3">{{prod.description}}</textarea>
{{prod.description}
现在更改将反映在
productObject.productDescription
属性中


也可以通过这个wiki来了解范围继承是如何工作的。。。从现在起,我将通过执行以下操作来修复它:

从这个角度来看:

嗯。。。我知道它看起来很难看,但是


谢谢你,不管怎样,我将勾选你的答案为正确,因为你给我的解决方案非常方便,唯一的问题是我的项目对于你提供的解决方案来说设计得有点糟糕:p但是很好

上帝。。。从现在起,我将通过执行以下操作来修复它:

从这个角度来看:

嗯。。。我知道它看起来很难看,但是


谢谢你,不管怎样,我将勾选你的答案为正确,因为你给我的解决方案非常方便,唯一的问题是我的项目对于你提供的解决方案来说设计得有点糟糕:p但是很好

上帝。。。从现在起,我将通过执行以下操作来修复它:

从这个角度来看:

嗯。。。我知道它看起来很难看,但是


谢谢你,不管怎样,我将勾选你的答案为正确,因为你给我的解决方案非常方便,唯一的问题是我的项目对于你提供的解决方案来说设计得有点糟糕:p但是很好

上帝。。。从现在起,我将通过执行以下操作来修复它:

从这个角度来看:

嗯。。。我知道它看起来很难看,但是


谢谢你,不管怎样,我将勾选你的答案为正确,因为你给我的解决方案非常方便,唯一的问题是我的项目对于你提供的解决方案来说设计得有点糟糕:p但是很好

添加绑定模型的html部分。另外,声明了方法
ok
的控制器在哪里。@Chandermani完成了,用信息更新了它:)添加绑定模型的html部分。另外,声明了方法
ok
的控制器在哪里。@Chandermani完成了,用信息更新了它:)添加绑定模型的html部分。还有,控制器在哪里