1

我有一个ng-model属性设置为“search.name”的输入

HTML

Search: 
<span id="searchName"> titles </span> | <span id="searchSpecies"> species </span>:

<input type="text" data-ng-model="search.name" />

如何在单击另一个元素(如链接或按钮)时更改此属性,并使我的过滤器与更新后的属性一起使用?现在,即使我更新了属性,过滤器的行为就好像它没有更新一样。

这就是我更新属性的方式:

脚本

$("#searchName").click(function() {
     $("input").attr("data-ng-model", "recipesearch.name");
});
$("#searchSpecies").click(function() {
         $("input").attr("data-ng-model", "recipesearch.species");
});

有没有更好的方法可以通过指令来做到这一点?

4

3 回答 3

3

如果我正确理解了这个问题,那么您有一个表单,其中根据输入框中输入的内容过滤数据。但是您也有其他可以自动更改搜索的链接,可能是“常用搜索值”列表。

这个Fiddle概述了我会做的事情。

基本上我建议在您的链接或按钮上使用 ng-click 来更新正在搜索的值。

例子:

标记

 <a href="#" ng-click="changeSearchTo('Cat')">Cat</a>

控制器

 $scope.changeSearchTo = function (searchCriteria) {
     $scope.search = {
         name: searchCriteria
     };
 };

如果我不明白你的问题,我很抱歉。

-萨德

于 2013-07-28T17:08:45.323 回答
2

你可能想看看$setViewValue

“应该从 DOM 事件处理程序中调用此方法。例如输入或选择指令调用它。

它在内部调用所有解析器,如果结果值有效,则更新模型并调用所有已注册的更改侦听器。”

于 2013-07-28T06:21:44.297 回答
1

$(document).ready()如下包装你的代码

并确保您已添加到 jQuery 库的链接

演示

$(document).ready(function () {
    $("#searchName").click(function () {
        $("input").attr("data-ng-model", "recipesearch.name");
    });
    $("#searchSpecies").click(function () {
        $("input").attr("data-ng-model", "recipesearch.species");
    });
});
于 2013-07-28T04:21:47.750 回答