当前位置: 首页 > 面试题库 >

AngularJS ng-model在ng-if内部不起作用

司立果
2023-03-14
问题内容

这是显示问题的小提琴。http://jsfiddle.net/Erk4V/1/

如果我在ng-if内部有一个ng-model,就会出现该模型无法正常工作的情况。

我想知道这是一个错误还是误解了正确的用法。

<div ng-app >
    <div ng-controller="main">

        Test A: {{testa}}<br />
        Test B: {{testb}}<br />
        Test C: {{testc}}<br />

        <div>
            testa (without ng-if): <input type="checkbox" ng-model="testa" />
        </div>
        <div ng-if="!testa">
            testb (with ng-if): <input type="checkbox" ng-model="testb" />
        </div>
        <div ng-if="!someothervar">
            testc (with ng-if): <input type="checkbox" ng-model="testc" />
        </div>

    </div>
</div>

问题答案:

ng-if与其他指令一样,该指令将创建子范围。请参见下面的脚本(或此jsfiddle)

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular.min.js"></script>



<script>

    function main($scope) {

        $scope.testa = false;

        $scope.testb = false;

        $scope.testc = false;

        $scope.obj = {test: false};

    }

</script>



<div ng-app >

    <div ng-controller="main">



        Test A: {{testa}}<br />

        Test B: {{testb}}<br />

        Test C: {{testc}}<br />

        {{obj.test}}



        <div>

            testa (without ng-if): <input type="checkbox" ng-model="testa" />

        </div>

        <div ng-if="!testa">

            testb (with ng-if): <input type="checkbox" ng-model="testb" /> {{testb}}

        </div>

        <div ng-if="!someothervar">

            testc (with ng-if): <input type="checkbox" ng-model="testc" />

        </div>

        <div ng-if="!someothervar">

            object (with ng-if): <input type="checkbox" ng-model="obj.test" />

        </div>



    </div>

</div>

因此,您的复选框将更改testb子作用域的内部,而不更改外部父作用域。

请注意,如果要修改父作用域中的数据,则需要像我添加的最后一个div一样修改对象的内部属性。



 类似资料:
  • 问题内容: 我正在尝试将a的值存储到我的JS代码中。但是我找不到在这种情况下为什么不起作用的原因。 有解决方法吗? 参见: JSFiddle 注意: 我正在创建一个文本编辑器,因此当用户将HTML存储在其后时,用户应该看到结果。(即,用户在存储以下内容时看到:“这是一个 示例 !”) 问题答案: contenteditable标签不能直接与angular的ng模型一起使用,因为contentedi

  • 问题内容: 我正在开发Angular应用程序。我尝试使用ng-if并在 ng-repeat中 切换,但未成功。我有类似的数据: $ scope.comments =上面提到的数据 和我的HTML一样: 如何在Angular中实现此目标? 问题答案: 尝试环绕(,,)与报价:

  • 问题内容: 我正在将ng-table与动态列一起使用,使用http://bazalt-cms.com/ng- table/example/20中 的创建者示例 它工作得很好,直到我尝试使用transclude包裹指令之前,女巫导致标题消失,如http://plnkr.co/edit/mjYVEf所示。 index.html script.js 有人遇到过同样的问题吗? 问题答案: 为页眉定义模板,

  • 问题内容: 我有一张桌子,其中的行通过重复。我正在尝试创建一个模板,为每一行生成列 问题是我的自定义td模板根本没有呈现。在这里,我打算用n个s 代替- 这将根据我的数据对象上的属性数量来确定,但是目前,我只是试图获得一个简单的指令,该指令将输出两列。 MYPLUNKER:显示此问题的一个实例和指令代码。 问题答案: 如注释中所指出,指令模板应具有单个根元素。因此,我建议您将元素移动到指令的模板,

  • 问题内容: 我有一个像这样的简单循环: 控制器中有一个功能。 据我所知,Angular将首先渲染视图并用数字替换插值,然后在单击事件时将评估字符串。 在这种情况下,完全可以得到预期的结果,即:但是……它什么也没做。 当然,我可以编写代码以从数组甚至DOM中获取代码,但这似乎不像Angular那样。 那么,如何在循环内向指令添加动态内容呢? 问题答案: 代替 做这个: 请看这个小提琴: http:/

  • 问题内容: 我有一个视图,其中父div上具有ng-if,而某些子元素上具有ng-show。嵌套在带有ng-if的元素下时,ng- show似乎无法正常工作。这是Angular错误还是我做错了什么? 见这个矮子。 HTML: JavaScript: 谢谢, 安迪 问题答案: 与指令不同,它 创建了一个新的作用域* 。 * 因此,当您在内部编写内容时,您是在子范围而非主范围上设置属性。 要解决此问题,