加载json数据并更新视图
Loading json data and updating view
我使用OnsenUI与AngularJS来构建一个搜索应用程序,在page1上用户输入要搜索的数据,当按下搜索按钮page1被推入堆栈并在后台触发get请求以获取请求的数据。
我使用一个全局变量来存储从服务获得的数据,并使用$watch
来监视数据中的任何变化,并用新值更新相应的作用域变量。
app.js
(function () {
'use strict';
var x;
var app = angular.module('myApp', ['onsen.directives']);
app.factory('pageService',['$http', function ($http) {
var fetchedData;
return {
start: function(){
$http({method: 'GET', url: 'http://127.0.0.1:3000'}).
success(function(data, status, header, config){
console.log('Success !');
console.log('Data Name : ' + data[0].name);
x = data[0];
return data;
}).
error(function(data, status, header, config){
console.log('fail !');
return status;
})
},
getData: function(){
return fetchedData;
}
};
}]);
app.controller('page1Ctrl',function($scope,pageService){
$scope.goToPage2 = function(){
$scope.x = pageService.start();
$scope.ons.navigator.pushPage("page2.html");
}
});
app.controller('page2Ctrl',function($scope,pageService){
$scope.$watch('x',function(newValue, oldValue){
console.log("x = " + newValue);
$scope.x = x;
});
});
})();
index . html的身体
<body>
<ons-screen>
<ons-page class="center" ng-controller="page1Ctrl">
<ons-navigator title="Page 1">
<div class="center">
<h1>Pharmy</h1>
<ons-text-input ng-model="medicine" placeholder="Enter Medicine Name" style="display:block; width:100%;" id="test"></ons-text-input>
<div style="position:relative">
<ons-text-input ng-model="location" placeholder="Enter Location" style="display:block; width:100%; margin-top:10px;"></ons-text-input>
<ons-icon icon="search" style="position:absolute;right:10px;top:5px;"></ons-icon>
</div>
<ons-button ng-click="goToPage2()"
style="width:10%; margin-top:10px;">
<ons-icon icon="search"></ons-icon>
</ons-button>
</div>
</ons-navigator>
</ons-page>
</ons-screen>
</body>
和page2.html
<ons-page class="center" ng-controller="page2Ctrl">
<ons-navigator-toolbar
title="Page 2">
</ons-navigator-toolbar>
<h2>Page 2</h2>
<textarea id="test2" ng-model="x"></textarea>
</ons-page>
我错过了什么?为什么文本区域不更新?
你需要使用Angular Services来避免使用$scope。美元的观察方法。然后简单地$emit/$broadcast变量。在第二个控制器中,使用$scope捕获变量。$on,它将工作
关于服务的更多文档
关于$emit和$broadcast的文档
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- ajax.beginform() 不更新部分视图 MVC
- 角度指令没有更新模型视图
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular数组更改时更新HTML视图
- 更新淘汰视图模型属性时激发更改事件
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Knockout.js-更新父视图模型中的数组,在第二个视图模型中使用值
- 比较两个数组,并通过使用 javascript 保留现有对象来更新新值
- 单击按钮时更新角度视图模型
- 当现有 Google 标记移动到另一个位置时,如何更新新的纬度和经度
- 如何在 DIV 中更新新图像
- 使用 AJAX 更新的模型更新 AngularJS 视图
- 主干新视图反映旧模型数据
- 如何在单击按钮时动态更新部分视图
- 更新主干视图
- 挖空 - 添加了可观察的不更新新对象
- 使用 ajax 从 php 文件中获取随机数不会更新新结果
- 创建新视图时调用呈现函数