我正在尝试创建类似于以下内容的自定义标签:
<mytag type="Big" />
其中 type 是绑定到组件的属性。以这样的方式将文本设置在标签中,如下所示:
<label>{{type}}</label>
...(其他组件)...
正如文档所说,我有一个设置默认类型的控制器:
$scope.type = "Small";
这样如果我使用没有属性类型的标签仍然会被设置。
我正在尝试使用指令进行绑定:
angular.module('TestPage',[])
.directive('mytag',function() {
return {
restrict: 'E',
templateUrl: 'component.html',
scope: {
type: '='
}
}
});
请注意,我的组件模板中确实有适当的 ng-app 设置 (ng-app="TestPage")。
我的问题是对类型的绑定似乎并没有真正绑定任何东西。
我已阅读有关如何使用指令将变量绑定到组件的文档。根据文档,您可以在范围内进行此类绑定。范围显然可以包含一个“对象哈希”(不管那是什么!),它创建了一个称为“隔离范围”(???)的东西。此类范围可以通过以下方式表示“本地属性”:
@ 或 @attr - 将本地范围属性绑定到 DOM 属性。结果始终是字符串,因为 DOM 属性是字符串。如果未指定 attr 名称,则本地名称和属性名称相同。给定范围的小部件定义:{ localName:'@myAttr'},然后小部件范围属性 localName 将反映 hello {{name}} 的插值。随着 name 属性的变化,小部件范围上的 localName 属性也会发生变化。该名称是从父范围(不是组件范围)读取的。
啊???这一切与正确的绑定语法有什么关系?
= 或 = 表达式 - 在本地范围属性和父范围属性之间设置双向绑定。如果未指定 attr 名称,则本地名称和属性名称相同。给定范围的widget定义:{localModel:'=myAttr'},那么widget范围属性localName将反映parentModel在父范围上的值。对 parentModel 的任何更改都将反映在 localModel 中,而对 localModel 的任何更改都将反映在 parentModel 中。
打扰一下?这里在说什么???
& 或 &attr - 提供一种在父作用域的上下文中执行表达式的方法。如果未指定 attr 名称,则本地名称和属性名称相同。给定范围的小部件定义:{ localFn:'increment()' },然后隔离范围属性 localFn 将指向 increment() 表达式的函数包装器。通常希望通过表达式将数据从隔离作用域传递到父作用域,这可以通过将局部变量名称和值的映射传递到表达式包装器 fn 来完成。例如,如果表达式是 increment(amount),那么我们可以通过将 localFn 调用为 localFn({amount: 22}) 来指定数量值。
现在我完全糊涂了!你有小部件标签和某种相关的功能,我必须写我才能进行绑定???我想要的只是将值绑定到标签标签!
我已经从文档 ( http://docs.angularjs.org/guide/directive ) 中复制了上面的文本来说明一点:这个文档读起来像旧的 UNIX 文档:对那些已经了解系统的人非常有用,但是对于试图发展真正专业知识的初学者来说没有太大帮助。所有的教程都展示了如何在 AngularJS 中完成简单的任务(非常适合玩具应用程序,但对于我想要构建的客户端应用程序不是那么好),为什么没有更高级的东西???
好的,是时候让我更有建设性了。
有人可以提供一些很好的简单示例,说明如何进行本文档难以描述的各种绑定吗???示例显示这些范围语句的正确语法和描述(用简单的英语)它们究竟如何返回到添加到自定义标记的属性???
感谢您的耐心等待,并提前感谢您提供的任何帮助。