Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS嵌套表_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS嵌套表

Javascript AngularJS嵌套表,javascript,angularjs,Javascript,Angularjs,我在不同的页面上包含了一个表,这非常有效,只是我无法获得包含表中的值。如果我在页面上使用此选项: <div data-ng-include="'/app/views/tasks/tasksTable.html'" /> 如果我将表格放在文件中,而不是使用ng include来显示表格,我可以显示与ng model=“task”关联的输入中键入的任何内容。您无法访问该任务的原因有两个。首先,是因为为模板创建了一个新的作用域,该模板是父控制器作用域的子级。第二个原因是您将字符串模型直

我在不同的页面上包含了一个表,这非常有效,只是我无法获得包含表中的值。如果我在页面上使用此选项:

 <div data-ng-include="'/app/views/tasks/tasksTable.html'" />

如果我将表格放在文件中,而不是使用ng include来显示表格,我可以显示与ng model=“task”关联的输入中键入的任何内容。

您无法访问该任务的原因有两个。首先,是因为为模板创建了一个新的作用域,该模板是父控制器作用域的子级。第二个原因是您将字符串模型直接附加到作用域,而不是创建包含模型的对象。我创建了一个示例来演示如何解决您的问题

你应该


我希望这有帮助。

可能是因为
ngInclude
创建了新的范围?虽然答案看起来是正确的,但我认为可以归结为一个简短的版本:不要在ng模型属性中使用任何没有点的内容。在您的示例中,您使用“任务”。创建子作用域时,会复制该作用域,因此您拥有“任务”的独立副本。在Adam修改的示例中,他使用了“task.value”。这里“task”是一个对象,对象是通过引用“复制”的,因此task指向父范围和子范围中的同一对象,因此task.value将访问相同的值。@kju说得很好,但是您没有提到此解决方案中的另一个关键因素。如果不在父作用域中将该对象声明为“外部”,则该对象将仅在子作用域(ng include scope)中创建,并且父作用域将无法访问该对象。否则,你所说的是100%正确的。总之#1。始终为模型使用对象并将其附着到范围。不要将作用域本身视为模型,而直接将数据附加到它们#2.始终在需要从中访问模型的最外层范围内声明模型。感谢您指出这一点。我确实忘记了这一点(以前被这咬过),但这当然是完全有道理的。如果还没有可以通过引用“复制”的对象,那么该对象将在当前范围内创建。但是,要记住的最大一点是始终使用在ng模型中包含点的对象。这是AngularJS开发人员自己说的:如果你没有一个点在ng模型属性,你是做错了。不幸的是,AngularJS文档和教程中的许多简单示例实际上都没有点显示其用法。
        <td>
            <i class="icon-ok-sign" ng-click="addTask()"></i>
        </td>
        <td>
            <input ng-model="task" />
        </td>
    $scope.addTask = function (data) {
         console.log($scope.task);        
    };