Angularjs 角度:关于将范围数据传递给指令

Angularjs 角度:关于将范围数据传递给指令,angularjs,Angularjs,我是个新手,还在学习。我发布了一个关于如何将范围数据传递给指令的问题。两个很好的人回答了我的问题,但是解释很简短,所以我不理解其中两个答案中的一些代码。我将在这里发布这两个答案和附带的代码,如果可能的话,有人可以回答我的问题 第一套代码 第1点 什么是transclude:true?transclude=true或false的含义是什么?在什么情况下人们使用transclude:true或false? 第2点 我必须将文件my directive.html放在文件夹中的哪个位置,文件的位置是什么

我是个新手,还在学习。我发布了一个关于如何将范围数据传递给指令的问题。两个很好的人回答了我的问题,但是解释很简短,所以我不理解其中两个答案中的一些代码。我将在这里发布这两个答案和附带的代码,如果可能的话,有人可以回答我的问题

第一套代码 第1点 什么是
transclude:true?
transclude=true或false的含义是什么?在什么情况下人们使用
transclude:true或false?

第2点 我必须将文件my directive.html放在文件夹中的哪个位置,文件的位置是什么


Angular会自动加载此模板文件吗

第1点:为什么在指令中声明范围?隔离作用域属性名称必须为price?这里我们可以给不同的名字吗

Ans:范围在指令中声明,以便指令的每个实例都有各自独立的范围。不,它不需要是价格,它可以是任何变量名称,根据您的选择。在指令的使用上下文中使用变量名是一种普遍做法

第2点: 我是新来的。这是我第一次注意到指令中声明的控制器。为什么以及何时在指令中声明控制器?大多数情况下,我们将控制器声明在指令之外。指令中的控制器功能和控制器内部是相同还是不同

Ans:此控制器是您指令的控制器,与您通常看到的模块控制器不同

第3点: “ngModel”的含义是什么?如果我们不写require:`ngModel,那么什么东西不起作用呢

Ans:使用指令时,指令强制将其与属性/控制器ng模型一起使用。有关更多详细信息,请参阅

第二套

要点1:什么是转移:对吗?transclude=真或假的含义是什么?在什么样的情况下,人们与transclude合作:对还是错

Ans:它将transclude设置为true。根据文件:

指令,该指令标记使用转置的最近父指令的转置DOM的插入点

transclude:true允许我们用模板包装用户模板。在我编写的指令中,我将其用作true,其中如果一个表为空,我将显示一条错误消息,显示没有可用数据。在我的例子中,表根本不会显示,而是显示该指令的模板

第2点: 我必须将文件my-directive.html放在文件夹中。文件的位置是什么? angular将自动加载此模板文件吗


答:您可以将此模板放置在项目文件夹中的任何位置。例如,在名为
视图
模板
的文件夹中。只要您在
模板URL
中提供了正确的路径,angular就会找到该文件并在指令中使用它。

在Officel文档中有相关指南。读一下。我必须看到链接,但如果foten在angular doc中找到解释,对那些刚接触angular的人来说就有点难了。所以我的要求请明智地回答我的观点。感谢另一个问题,我的有效问题不应该是否定的,因为我显示了那些不清楚的区域。阅读。
<li my-directive price="item.price" ng-repeat="item in products">{{item.name}} &mdash; {{item.price}}</li>

myApp.directive('myDirective', function(){
  return {
    scope: { price: '=' },
    require: 'ngModel',
    link : function(scope){
      console.log(scope.price)
    },
    controller: function(scope, element, attrs, ngModel){
      console.log(ngModel.price);
      console.log(scope.price);
    }
  }
});
angular.module('myApp')
.directive('myDirective', function () {
    return {
        transclude: true,
        restrict: 'AEC',
        scope: {
            name: '=',
            price: '='
        },
        templateUrl: 'my-directive.html',
        link: function (scope, element, attr) {
            }
        }
    }
});

<li my-directive ng-repeat="item in products" price="item.price" name = "item.name"></li>