<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而没有更新值..
为什么我这样做.. 单击“显示详细信息”按钮时,所选信息应移至只读页面(使用默认路由),并且应向用户显示详细信息,然后单击浏览器后退按钮应导航到搜索页面并仍显示选定的值。
为了得到这个,我使用rootScope存储搜索值,我再次填充它。
我已经分享了工作代码。如果我能以更好的方式做到这一点,请建议我。 我必须要问基本的逻辑,但我是棱角分明的新人。
谢谢!
答案 0 :(得分:2)
首先以这种方式使用jQuery和AngularJS不是最佳解决方案。
现在,关于发生了什么。您实质上是更新视图,而角度不知道模型值已更改。视图和模型值是两个不同的实体。您需要在赋值后调用$ scope.digest()或在a中进行赋值 $ scope.apply(function(){}); 块。
这将使Angular知道更改并导致模型更新。那说你能告诉我们你为什么这么做吗?我们或许可以帮助您提出更好,更有效的模式。
答案 1 :(得分:1)
有几种方法可以做到这一点。
Rootscope会起作用但我通常会尽可能避免把东西放在上面。它会变得沉重和慢你的应用程序。我建议创建一个全球价值, .value('myVal',{ 道具:'', prop2:'' }); 注入它并在需要时更新/读取。
此外,使用ngModel的内置双向数据绑定已经到位,以消除您正在做的事情的需要。如果这不起作用,那么你可以创建一个自定义指令来传递或获取angular元素并在那里进行读/写,从而消除了对jQuery的需求。