想要更新我的'ng-model'值angular

时间:2015-07-05 05:26:25

标签: javascript angularjs html5

<div style="width:100%">
       <input name="myInput1"  id="txt_name" class="search-pannel" ng-model="query.name" type="text" placeholder="Type something" ng-change="search(query.name)">{{query.name}}
       <input type="text" id="txt_name2" />
</div>

我想更新我的ng-model="query.name"

 if ($rootScope.searchText != undefined) {

    //$scope.query = $rootScope.searchText;
    //$scope.query.name = $scope.query;
    $('#txt_name').val('"' + $rootScope.searchText + '"');
    $('#txt_name2').val('"' + $rootScope.searchText + '"');
}

如果我的rootcope值存在,我正在更新我的ng-model="query.name"但我可以看到因为ng-model而没有更新值..

Demo

为什么我这样做.. 单击“显示详细信息”按钮时,所选信息应移至只读页面(使用默认路由),并且应向用户显示详细信息,然后单击浏览器后退按钮应导航到搜索页面并仍显示选定的值。

为了得到这个,我使用rootScope存储搜索值,我再次填充它。

我已经分享了工作代码。如果我能以更好的方式做到这一点,请建议我。 我必须要问基本的逻辑,但我是棱角分明的新人。

谢谢!

2 个答案:

答案 0 :(得分:2)

首先以这种方式使用jQuery和AngularJS不是最佳解决方案。

现在,关于发生了什么。您实质上是更新视图,而角度不知道模型值已更改。视图和模型值是两个不同的实体。您需要在赋值后调用$ scope.digest()或在a中进行赋值     $ scope.apply(function(){}); 块。

这将使Angular知道更改并导致模型更新。那说你能告诉我们你为什么这么做吗?我们或许可以帮助您提出更好,更有效的模式。

答案 1 :(得分:1)

有几种方法可以做到这一点。

Rootscope会起作用但我通常会尽可能避免把东西放在上面。它会变得沉重和慢你的应用程序。我建议创建一个全球价值,    .value('myVal',{         道具:'',         prop2:''     }); 注入它并在需要时更新/读取。

此外,使用ngModel的内置双向数据绑定已经到位,以消除您正在做的事情的需要。如果这不起作用,那么你可以创建一个自定义指令来传递或获取angular元素并在那里进行读/写,从而消除了对jQuery的需求。