非常简单的代码:
<div ui-if="showMemberId">
<input ng-model="memberId" ng-change="test()" id="memberId" name="memberId" class="text" type="text">
</div>
对于控制器:
$scope.memberId = 'SDF';
$scope.test = function test(){
console.log($scope.memberId);
};
$scope.showMemberId = true;
奇怪的是,ng-change
有效,但不是ng-model
。当我输入输入时,它只是将字符串SDF
一遍又一遍地记录到控制台,因为模型没有改变。
有什么想法吗?
答案 0 :(得分:2)
似乎ui-if
正在创建像ng-if
这样的子范围。因此,外memberId
范围将与ng-model
内的ui-if
不同。
在这种情况下,您需要在定义dot rule
时遵循ng-model
。基本上,当它创建子范围时,它的原型继承自父范围。并且prototypal inheritance
适用object
类型而不是primitive types
要使其正常工作,您需要在控制器中定义对象,如$scope.model ={}
&amp;定义其中的所有属性。
<强>标记强>
<div ui-if="showMemberId">
<input ng-model="model.memberId" ng-change="test()"
id="memberId" name="memberId" class="text" type="text"/>
</div>
<强>控制器强>
$scope.model = {}; //made an object type model
我建议您使用
ng-if
代替ui-if
,就像有角度一样 提供相同的功能。