gpt4 book ai didi

angularjs - 如何从 Angular Controller 访问 $viewValue

转载 作者:行者123 更新时间:2023-12-03 00:04:12 25 4
gpt4 key购买 nike

我有一个 Angular 应用程序设置如下。 NG-repeat 包含 li 元素,每个元素有 2 个输入(远远超过 2 个,但对于这个演示,我有 2 个)。

该指令设置 Controller 。

HTML

<li ng-repeat="lw in lw_list"   my-lw   ng-model="lw"  >            
<input my-cell ng-init="init(lane , $index , 'name')" ng-class="'lib_name inline_div'" type='text' value="{{ lw.library.name }}" >
<input my-cell ng-init="init(lane , $index , 'volume') "ng-class="'number_field'" type="number" ng-model='volume' />
</li>

JavaScript

angular.module('Demo').directive("myCell",  function(CellStore){
return {
controller : 'CellCtrl' ,
};
}) ;


angular.module('Demo').controller('CellCtrl' , function($scope , CellStore){
$scope.init = function(lane, row, column){
$scope.row = row ;
$scope.column = column ;
console.log("init" , $scope.$parent );
CellStore.addCell( lane.lane, row, column , $viewValue ) ;
} ;
}) ;

所以我们的想法是,当创建每个输入时,它将调用 init 函数,该函数将输入值存储在嵌套哈希中(以便稍后检索)。但是我不知道如何从 Controller 内访问 $viewValue 变量(输入包含的值)。

最佳答案

其他人已经解决了您的问题,但我没有看到您主要问题的答案,即如何从 Controller 访问 $viewValue(如果您想这样做)。

您真正要做的是访问 ngModelController 的实例附加到每个输入。如果您只是在表单元素及其中的每个输入上放置 name 属性,那么就可以在 $scope 上访问它们的 Controller 。 (由于您使用的是 ng-repeat,因此您需要某种动态命名方案,以便可以访问所有这些内容。您也可以只迭代它们。)

命名完所有内容后,要获取实例,只需:

var instance = $scope.formName.inputName;

$viewValue 应该位于:

instance.$viewValue

获得此引用后,您还可以使用 ngModelController 上的其他方法,例如

instance.$setValidity();

编辑:您可以在 this Codepen 上使用它,看看它与某些验证问题有何关系。 .

关于angularjs - 如何从 Angular Controller 访问 $viewValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com