javascript - ui-if 与 ng-model 冲突?

标签 javascript angularjs angular-ngmodel prototypal-inheritance

非常简单的代码:

    <div ui-if="showMemberId">
        <input ng-model="memberId" ng-change="test()" id="memberId" name="memberId" class="text" type="text">
    </div>

对于 Controller 来说:

$scope.memberId = 'SDF';
$scope.test = function test(){
    console.log($scope.memberId);
};
$scope.showMemberId = true;

奇怪的是,ng-change 有效,但 ng-model 无效。当我输入输入时,它只是将字符串 SDF 一遍又一遍地记录到控制台,因为模型没有改变。

有什么想法吗?

最佳答案

似乎 ui-if 正在创建一个像 ng-if 那样的子作用域。因此,外部 memberId 作用域将不同于 ui-if 中存在的 ng-model。 在这种情况下,您需要在定义 ng-model 时遵循 点规则。基本上当它创建一个子作用域时,它通常是从父作用域继承的。并且原型(prototype)继承适用于object类型而不适用于原始类型

要使其正常工作,您需要在 Controller 内定义对象,如 $scope.model ={} 并在其中定义所有属性。

标记

<div ui-if="showMemberId">
    <input ng-model="model.memberId" ng-change="test()" 
     id="memberId" name="memberId" class="text" type="text"/>
</div>

Controller

$scope.model = {}; //made an object type model

I'd encourage you to use ng-if instead of ui-if, as angular does provide the same functionality.

关于javascript - ui-if 与 ng-model 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202996/

相关文章:

javascript - 以 Angular 保存对象数组

javascript - 如何将 ENV 变量传递到脚本标记中

javascript - 在客户端使用 Jade 语言,应在服务器端编译而不影响条件

mysql - 如何使用/Angular 从 MySQL 服务器查看 RowDataPacket?

javascript - 为什么 ng-model 不更新?

javascript - ng-model 仅在我嵌套相同的 Controller 时才有效?

javascript - 安装后几乎是空的 react 项目

javascript - 函数定义是对象吗?

css - (AngularJS) 整个网站只少了一个文件

javascript - 根据条件检查分配 $scope.chart.options - javascript