Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Angularjs 如何使角度为动态添加的对象工作_Angularjs - Fatal编程技术网

Angularjs 如何使角度为动态添加的对象工作

Angularjs 如何使角度为动态添加的对象工作,angularjs,Angularjs,我有两个文件,如下所述。我正在文件_1.php中定义控制器 在文件_2.php中,我“要求”文件_1.php,然后将ul移动到文件_1.php中描述的div中 我希望能够做到的是——让控制器中的函数为动态添加的ul工作。我的猜测是,当加载页面时,ul块被视为在控制器外部,因此它不工作。在搜索时,我能够看到一个涉及$compile的模型,但它适用于ng模型,而不适用于repeat或{{}。我是新来的,非常感谢您的帮助 文件_1.php <?php <div id="box_1"

我有两个文件,如下所述。我正在文件_1.php中定义控制器

在文件_2.php中,我“要求”文件_1.php,然后将ul移动到文件_1.php中描述的div中

我希望能够做到的是——让控制器中的函数为动态添加的ul工作。我的猜测是,当加载页面时,ul块被视为在控制器外部,因此它不工作。在搜索时,我能够看到一个涉及$compile的模型,但它适用于ng模型,而不适用于repeat或{{}。我是新来的,非常感谢您的帮助

文件_1.php

<?php
   <div id="box_1" ng-controller="MyCtrl"></div>
?>
<?php
   require 'file_1.php';
?>

<ul>
   <li ng-repeat="item in items">item.text</li>
</ul>

{{items}}

<script>
   function MyCtrl($scope) {
      $scope.items = [{text: "Item 1", text: "Item 2"}];
   }

   $(document).ready(function() {
          $('#box_1').append($('ul'));
   })
</script>

文件_2.php

<?php
   <div id="box_1" ng-controller="MyCtrl"></div>
?>
<?php
   require 'file_1.php';
?>

<ul>
   <li ng-repeat="item in items">item.text</li>
</ul>

{{items}}

<script>
   function MyCtrl($scope) {
      $scope.items = [{text: "Item 1", text: "Item 2"}];
   }

   $(document).ready(function() {
          $('#box_1').append($('ul'));
   })
</script>

  • item.text
{{items}} 函数MyCtrl($scope){ $scope.items=[{文本:“项目1”,文本:“项目2”}]; } $(文档).ready(函数(){ $('#box_1')。追加($('ul'); })
我找到的一些信息:
在这里,在“编译/链接分离背后的原因”一节中,他们解释了为什么ng repeat的编译不同。有人能解释一下它的确切含义和/或方法吗?我试着编译-任何不在ng repeat中的东西都可以工作,但ng repeat中的任何东西都不行。

您是否出于某种原因而执着于此文件结构?你试图做的事情与棱角的纹理背道而驰,因此将是一种痛苦。Angular应该可以让您从使用jQuery操作DOM的痛苦中解脱出来

不过,似乎使用
$compile
应该可以工作。你能告诉我们你想用它做什么吗

为什么你不能做这样的事

<div id="box_1" ng-init="items = [{text: "Item 1", text: "Item 2"}]">
    <ul>
        <li ng-repeat="item in items">{{item.text}}</li>
    </ul>

    {{items}}
</div>

  • {{item.text}
{{items}}

(在
nginit
上语法可能有点不正确)

在控制器中操作DOM不是一种好的做法。除此之外,$scope.$apply()是否有帮助


我认为你应该用指令来做这类事情。事实上,你能解释一下你到底想在这里做什么吗?我的意思是为什么要这样做?我有一些内容是通过php生成的,还有一些内容是静态html。php在多个html文件中重复使用。控制器就在那里。你有没有考虑过在#box#u 1中包含ul?我不能使用ng include inside#box#u 1,因为我在文件#2中加载#box#u 1,而不是以其他方式加载#box#u 1,这不应该是
{item.text}
?我这样做的原因是因为我在多个文件中使用“require”重用文件#1.php,就像在文件#2中一样,例如文件_1的内容是通过php生成的,但在所有文件中都很常见。因此,我无法初始化文件_1中可能在文件_2中使用但在文件_3中不使用的任何内容。是的,我意识到Angular不能与DOM操作结合使用。