【问题标题】:Angular.js: How to use ng-model outside its scopeAngular.js:如何在其范围之外使用 ng-model
【发布时间】:2016-06-13 17:35:02
【问题描述】:

我对此进行了很多搜索,但找不到合适的答案。如果我再次问这个问题,我很抱歉。我是 Angular.js 的新手

我的代码:

<table>
        <tr>
            <th ng-repeat="x in setno" ng-init="parentset=$index">SET {{ x.alpha }}</th>


        </tr>

        <tr ng-repeat="(parentset,ques) in selected">

               <td ng-repeat="x in setno">
                <select ng-model="ques" ng-options="y.name for y in topics"></select>{{ques.qid}}


            </td>
            <td>{{$parent.ques.qid}}hi</td>
        </tr>
        <tr>
            <td ng-repeat="x in setno">

                <button ng-click="addques($index,ques.qid)" ng-model="ques.quid">add{{$parent.ques.qid}}</button>

            </td>
        </tr>
    </table>

ques ng 模型在 select 标签之后但仅在 td 标签内 工作正常。我如何在该特定标签之外使用它。 即,这里: &lt;td&gt;{{$parent.ques.qid}}hi&lt;/td&gt; 和这里: &lt;button ng-click="addques($index,ques.qid)" ng-model="ques.quid"&gt;add{{$parent.ques.qid}}&lt;/button&gt;?

我试过 $parent 并且没有它,但它不起作用。 我哪里错了?

【问题讨论】:

标签: angularjs


【解决方案1】:

select 标签有自己的作用域,所以如果你想在 select 标签之外使用“ques”,你必须在父作用域中扩展一个对象。

为此,请在父对象中创建一个对象($scope 变量):

$scope.test;

并在选择(子范围)中扩展它:

ng.model = "test.ques";

然后就可以从select标签中访问“ques”了。

【讨论】:

  • 我按照你说的在我的主控制器中创建了一个对象 $scope.test 然后在我的 select 标签和 td, button 标签我使用了 test.ques.qid。它只适用于第一个标签,而不适用于其他标签。
  • 是的,这不适用于ng-model="test.ques.quid",因为test.ques 不是父作用域的对象,所以你不能扩展它。尝试在其中创建一个$scope.test.ques父范围!
  • 可以@jAYANTYADAV 吗?
  • 我还是有问题。考虑以下代码:link,尽管我的控制器中有$scope.id。只寻找ng-model="id"
  • 同样的问题:您在子级(选择标记)中创建了一个 $scope.id,因此它会覆盖父级范围属性 id。如果您想共享 id,请在父级中创建一个对象并使用属性 id 对其进行扩展,以便您可以在子范围内对其进行编辑并在父级中访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多