link 中定义的范围函数未触发
Scope function defined in link not fired
我做了一个指令,显示一个带有 'add' 按钮的列表。 table 在同一页中出现两次,但形式不同,并且 table-data:
<list ng-model="list1" form-name="form1"></list>
<list ng-model="list2" form-name="form2"></list>
在 link 函数中,我定义了一个 'add' 函数,它将使用指令声明中指定的表单和模型:
scope: {
list: '=ngModel',
formName: '@',
},
link: function postLink(scope, element, attrs) {
scope.add = function() {
FormService.show(formName).then(function(item) {
list.push(item);
});
}
var addButton = angular.element('<a ng-click="add()">ADD ITEM</a>');
var container = angular.element('<div></div>');
container.append($compile(addButton)(scope));
element.replaceWith(container);
问题是添加函数永远不会被 'ADD ITEM' link...
** 我不能使用模板配置对象,因为我需要动态的模板
试试这个:
element.append('<a ng-click="add()">ADD ITEM</a>');
$compile(element.contents())(scope)
您可以通过向指令的模板 属性 提供 returns 字符串的函数来动态构建模板:
scope: {
list: '=ngModel',
formName: '@',
},
template: function(element, attrs) {
var addButton = angular.element('<a ng-click="add()">ADD ITEM</a>');
var container = angular.element('<div></div>');
container.append(addButton);
var str = container.prop('outerHTML');
return str;
},
link: function postLink(scope, element, attrs) {
scope.add = function() {
FormService.show(formName).then(function(item) {
list.push(item);
});
}
我做了一个指令,显示一个带有 'add' 按钮的列表。 table 在同一页中出现两次,但形式不同,并且 table-data:
<list ng-model="list1" form-name="form1"></list>
<list ng-model="list2" form-name="form2"></list>
在 link 函数中,我定义了一个 'add' 函数,它将使用指令声明中指定的表单和模型:
scope: {
list: '=ngModel',
formName: '@',
},
link: function postLink(scope, element, attrs) {
scope.add = function() {
FormService.show(formName).then(function(item) {
list.push(item);
});
}
var addButton = angular.element('<a ng-click="add()">ADD ITEM</a>');
var container = angular.element('<div></div>');
container.append($compile(addButton)(scope));
element.replaceWith(container);
问题是添加函数永远不会被 'ADD ITEM' link...
** 我不能使用模板配置对象,因为我需要动态的模板
试试这个:
element.append('<a ng-click="add()">ADD ITEM</a>');
$compile(element.contents())(scope)
您可以通过向指令的模板 属性 提供 returns 字符串的函数来动态构建模板:
scope: {
list: '=ngModel',
formName: '@',
},
template: function(element, attrs) {
var addButton = angular.element('<a ng-click="add()">ADD ITEM</a>');
var container = angular.element('<div></div>');
container.append(addButton);
var str = container.prop('outerHTML');
return str;
},
link: function postLink(scope, element, attrs) {
scope.add = function() {
FormService.show(formName).then(function(item) {
list.push(item);
});
}