我是AngularJS的新手。
我希望在加载部分内容时传递数据。
我想要一个允许动态属性的指令。例如,在视图中,我可以在范围上定义对象“公司”:
<partial url:"employees/index.html" query_string: "Fun House Inc" employees="company.employees">
并且在视图中定义了对象“employee”:
<partial url:"employees/show.html" employee="employee">
以下是我写的(在coffeescript中)几乎可行的指令。在上面的示例中,query_string属性被传递(由于链接函数中的作用域[k] = v),但employees属性并不是它传递字符串而不是被评估的对象。
App.directive "partial", ->
restrict: "E"
scope:
attribute: "@"
expression: "&"
model: "="
array: "="
data: "="
templateUrl: (el,attrs)->
"/assets/partials/" + attrs.url
link: (scope,el,attrs)->
for k, v of attrs
scope[k] = v if (k[0] != "$" && !scope[k]?)
在这个指令中,我已经定义了数组,模型和数据,因此我可以通过执行类似
的操作来解决我的问题<partial url:"employees/index.html" query_name: "Fun House Inc" array="company.employees">
和
<partial url:"employees/show.html" model="employee">
在我的观点中。这说我对这个解决方案并不是很满意,我很惊讶没有现成的解决方案。我错了吗?有没有更好的方法来做到这一点,或者一种方法来修复我的指令,使其按照我想要的方式工作?
答案 0 :(得分:0)
因此,本质上提出的是一种初始化特定视图的数据的方法。如果是这种情况,则应该为每个视图指定一个不同的控制器。这正是官方Angular教程所采用的方法。
我建议您查看routing上的教程章节(定义分配给这些路径的模板路径和控制器)和custom services(从外部源获取数据,然后初始化$ scope)两个独立控制器的变量)。您所描述的内容确实是作为基础应用程序架构构建到Angular中的,我建议不要制定指令来尝试复制Angular已经处理好的内容。