ng-model 未在指令中更新
ng-model not updating in directive
我的 ng-model 绑定到 filterDetails.value 似乎有问题。它将显示值 "Test",但是当我将值更新为 "Test1234" 并单击按钮执行 filterColumn() 时,警报显示 "Test" 而不是更新后的值。如果我再次将该值更新为 "Test12345" 并单击它显示 "Test1234" 的过滤器按钮。它总是落后一个更新。我正在使用 angular 版本 1.2.24。这个特定的弹出窗口正在 ng-grid 中的 header 单元格模板中使用。我在页面上的其他内容中添加了一个弹出窗口,它工作正常,所以它似乎与在 ng-grid.
中使用它有关
app.directive('popOver', function ($compile) {
var filterTemplate = "<div><input type=\"text\" ng-model=\"filterDetails.value\"></input><button style=\"margin-left:5px;\" ng-click=\"filterColumn()\">Filter</button></div>";
var getTemplate = function () {
var template = filterTemplate;
return template;
}
return {
restrict: "A",
link: function (scope, element, attrs) {
scope.filterDetails =
{
value: "Test"
};
scope.filterColumn = function () {
alert(scope.filterDetails.value);
};
var popOverContent;
var html = getTemplate();
popOverContent = $compile(html)(scope);
var options = {
content: popOverContent,
placement: "bottom",
html: true,
title: scope.title,
container: "body"
};
$(element).popover(options);
},
scope: false
};
});
您使用的 angular 是什么版本?您可能需要升级 angular 的版本。我将一个快速的 jsfiddle 和你的指令放在一起,使用 angular 1.3.15 和 1.2.28
对我来说似乎工作正常
//angular 1.3.15
//angular 1.2.28
我的 ng-model 绑定到 filterDetails.value 似乎有问题。它将显示值 "Test",但是当我将值更新为 "Test1234" 并单击按钮执行 filterColumn() 时,警报显示 "Test" 而不是更新后的值。如果我再次将该值更新为 "Test12345" 并单击它显示 "Test1234" 的过滤器按钮。它总是落后一个更新。我正在使用 angular 版本 1.2.24。这个特定的弹出窗口正在 ng-grid 中的 header 单元格模板中使用。我在页面上的其他内容中添加了一个弹出窗口,它工作正常,所以它似乎与在 ng-grid.
中使用它有关 app.directive('popOver', function ($compile) {
var filterTemplate = "<div><input type=\"text\" ng-model=\"filterDetails.value\"></input><button style=\"margin-left:5px;\" ng-click=\"filterColumn()\">Filter</button></div>";
var getTemplate = function () {
var template = filterTemplate;
return template;
}
return {
restrict: "A",
link: function (scope, element, attrs) {
scope.filterDetails =
{
value: "Test"
};
scope.filterColumn = function () {
alert(scope.filterDetails.value);
};
var popOverContent;
var html = getTemplate();
popOverContent = $compile(html)(scope);
var options = {
content: popOverContent,
placement: "bottom",
html: true,
title: scope.title,
container: "body"
};
$(element).popover(options);
},
scope: false
};
});
您使用的 angular 是什么版本?您可能需要升级 angular 的版本。我将一个快速的 jsfiddle 和你的指令放在一起,使用 angular 1.3.15 和 1.2.28
对我来说似乎工作正常//angular 1.3.15
//angular 1.2.28