我的问题非常普遍。我看到很多人有类似的问题,但我仍然没有得到我的答案。
我的目标是实现一个独立的指令来封装由标签(span)和值(input)组成的div。这里有一些值得注意的具体内容:
1. 我的指令旨在将“input”的值保留到我的页面控制器分数中,该控制器是我指令所使用的作用域的祖先。因此,通过适当数量的".$parent",我可以访问我想要的作用域以进行ngModel分配。 2. 我的指令不知道它应该使用哪个占位符来保存用户输入。这个占位符作为HTML属性传递给我的指令。
我正在使用指令编译阶段来操作指令的HTML(主要是向指令的模板HTML添加属性)。在预链接阶段,我希望操作指令正在使用的作用域,以便将指令的占位符添加到我想要的作用域,并在需要时分配一些默认值。(我想我可以用ng-init来实现这个目标,而不是搞乱作用域,但我认为这与我的问题无关)。
正如我上面所解释的,我有一个函数(determinePlaceholderName()),它返回一个字符串,这个字符串是我想要分配给ngModel的确切值。例如:
基本上我期望这样被处理:
我的目标是实现一个独立的指令来封装由标签(span)和值(input)组成的div。这里有一些值得注意的具体内容:
1. 我的指令旨在将“input”的值保留到我的页面控制器分数中,该控制器是我指令所使用的作用域的祖先。因此,通过适当数量的".$parent",我可以访问我想要的作用域以进行ngModel分配。 2. 我的指令不知道它应该使用哪个占位符来保存用户输入。这个占位符作为HTML属性传递给我的指令。
我正在使用指令编译阶段来操作指令的HTML(主要是向指令的模板HTML添加属性)。在预链接阶段,我希望操作指令正在使用的作用域,以便将指令的占位符添加到我想要的作用域,并在需要时分配一些默认值。(我想我可以用ng-init来实现这个目标,而不是搞乱作用域,但我认为这与我的问题无关)。
正如我上面所解释的,我有一个函数(determinePlaceholderName()),它返回一个字符串,这个字符串是我想要分配给ngModel的确切值。例如:
$parent.$parent.$parent.placeHolderName
我希望将该函数分配给输入的ng-model属性,假设Angular将其视为表达式,评估它并生成我期望的结果。以下是我如何分配ng-model属性:
compile: function(cElem, cAttrs) {
//Some non relevant code here ....
$(cElem[0]).find("div input").attr("ng-model", "determinePlaceholderName()");
}
基本上我期望这样被处理:
$(cElem[0]).find("div input").attr("ng-model", "$parent.$parent.$parent.placeHolderName");
[关于determinePlaceholderName()]
这个函数是我在指令的链接函数中定义的:
link: function ($scope) {
$scope.constructValuePlaceholderName = function() {
//Some logic here.
return result;
}
[我的问题]
我的问题是什么呢?Angular 给我返回了一个错误提示:
<input ng-model="myFunc()">
文档中指出,非可分配表达式。
[我的问题]
如果Angular禁止函数赋值,如何动态设置ngModel?
感谢您的时间!