AppGyver 类固醇超音速视图
AppGyver Steroids Supersonic Views
我正在尝试切换视图/将视图传递到另一个视图。
我有一个正在调用 kimono API 的应用程序,所有设置都带有超音速背景,看起来不错。我在 API 中有 1 个字符串和 2 个对象。我有一个页面使用名为 event:
的页面调用完整的事件列表
{{ event.eventdescription }}
The Event#Index controller is:
angular
.module('event')
.controller("IndexController", function ($scope, Event, supersonic) {
$scope.events = null;
$scope.showSpinner = true;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
$scope.events = events;
$scope.showSpinner = false;
});
});
});
And all of that displays properly. The issue is when I click on one of those items shown which should go to the specific event I get nothing. And I'm sure I'm doing this wrong or don't understand enough about switching views. I've read many examples, but I'm not getting how it all goes together.
这是我的活动#show 页面。非常通用,此时只是尝试加载任何信息。
<div ng-controller="ShowController">
<super-navbar>
<super-navbar-title>
Show
</super-navbar-title>
</super-navbar>
<div class="padding">
{{ event.eventdescription }}
</div>
</div>
以及演出总监:
angular
.module('event')
.controller("ShowController", function ($scope, Event, supersonic) {
$scope.events = null;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
});
});
});
而且这总是 returns 空白页。当我查看日志时它说 Undefined.undefined 我不确定那是什么意思。
非常感谢任何对此的见解。在 appgyver 文档中,我看到了一个叫做的东西。
var view = new supersonic.ui.View("bananas#show");
supersonic.ui.layers.push(view);
但我不确定如何使用它?
任何见解表示赞赏。
所以,我更新了:
这是我正在处理的事件#index。
<div ng-controller="IndexController">
<super-navbar>
<super-navbar-title>
Event Index
</super-navbar-title>
</super-navbar>
<ul class="list" ng-hide="events.length == 0">
<super-navigate view-id="event#show" data-params-id="{{event.id}}" ng-repeat="event in events">
<li class="item item-icon-right">
<h2 ng-bind="event.EventTitles['text']"></h2>
<img ng-src="{{ event.HeadlineImages.src }}" width="100px" height="100px">
<p> {{ event.eventdescription }} </p>
<i class="icon super-ios7-arrow-right"></i>
</li>
</super-navigate>
</ul>
</div>
和索引控制器
angular
.module('event')
.controller("IndexController", function ($scope, Event, supersonic) {
$scope.events = null;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
$scope.events = events;
});
});
});
显示 html 页。
<div ng-controller="ShowController">
<super-navbar>
<super-navbar-title>
Show
</super-navbar-title>
</super-navbar>
<div class="padding">
<p>
{{event.eventdescription}}
</p>
</div>
</div>
ShowController
angular
.module('event')
.controller("ShowController", function ($scope, Event, supersonic) {
supersonic.ui.views.current.params.onValue( function (Event) {
$scope.events = event.id;
});
Event.find($scope.events).then( function (Event) {
$scope.$apply( function () {
$scope.event = Event;
});
});
});
我也更新了 structure.coffee
rootView:
location: "event#index"
preloads: [
{
id: "event#show"
}
{
id: "using-the-scanner"
location: "example#using-the-scanner"
}
]
感谢任何帮助。
您的 ShowController 中似乎没有设置数据。我之前评论过这个。我认为您需要使用 <super-navigate>
和 location
属性 和 data-params-id
或任何您想要的参数名称来传递事件的 ID。然后在您的 ShowController 中,您可以通过以下方式访问它:
supersonic.ui.views.current.params.onValue( function (values) {
// values.nameOfPropertyPassedInCouldBeEventId
$scope.id = values.id;
});
那么您也许可以像这样通过 id 访问事件:
Event.find($scope.id).then( function (theEvent) {
$scope.$apply( function () {
$scope.event = theEvent;
});
});
现在在您的视图中您有 {{ event.eventdescription }}
应该有一些数据。
还有一个关于视图何时可见的部分,这意味着每次您看到该视图页面时都会触发:
supersonic.ui.views.current.whenVisible( function () {
// your code for watching events
});
好吧,经过几个星期的努力让这个工作起来,虽然,我仍然没能让它工作......我想我终于有了这个......看起来这里最大的问题是使用 Kimono 和 AppGyver。 JSON 文件已在 Kimono 中更新,使用:
function transform(data) {
data.results.collection1 = data.results.collection1.map(function(o) {
o.eventdescription = {
text: o.eventdescription
}
return o;
});
return data;
}
这会清理作为 API 导出/传入 App Gyver 的 JSON 文件,以便所有部分都是对象。 (我知道,也许没什么大不了的,但我只是想让它尽可能干净)。让您了解在 Kimono 修改结果框中使用此脚本前后的情况 -->
之前:
"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "Lorem Ipsum"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "Lorem Ipsum"
},
"eventdescription":"Lorem Ipsum"
},
将 eventdescription 保留为字符串而不是对象,然后是 AFTER:
"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"eventdescription": {
"text": "TEXT"
},
因此,在 运行 之后进入 Kimono,您可以看到所有条目都是 "objects"。你会在 link 中的 apikey 之后使用 &kimmodify=1 因此:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimmodify=1
NEXT,正如 AppGyver 社区向我解释的那样,对于正在创建的 JSON / API 中的每个项目,几乎需要一个 "id" 种类能够使用 ShowController 在 show.html 上创建合理/可行的 url 字符串。
从索引转到特定条目视图时,应该创建类似于 /app/tier/showid=123456789
的内容。
(您可以通过 Mac 上的 Safari Web Inspector 和 IOS 模拟器在 AppGyver 中使用调试模式找到 URLs。或者浏览器使用 http://localhost:[some port number]/location/of/app
使用 Android 模拟器(推荐的 Genymotion)时。
因此,要做到这一点,在 Kimono 中使用 API 哈希添加 &kimhash=1 到 url 的末尾 APIKEY 之后但之前修改如下:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimhash=1&kimmodify=1
这会创建类似
的内容
"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"eventdescription": {
"text": "TEXT"
},
"hash":"1a2b3c4d5e6f7g8h9z"},
为每个条目创建随机 'indentifier'。
现在,这就是我现在被困的地方。 ...因为需要进来的 API URL 是:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimhash=1&kimmodify=1
当你在后端配置你的 API 时,我看不到要输入这个新的 &kimhash=1&kimmodify=1 的区域,它需要在 URL 的末尾调用格式正确且 ID 为 API 的代码,据我所知,没有这样做的参考资料。
http://docs.appgyver.com/supersonic/guides/data/other-data-providers/kimono-labs/
我觉得这是解决所有问题并最终能够启动并运行的倒数第二步。最后一个显然是重新访问将 id 拉入 ShowController,我对我是否能以某种方式弄清楚这最后一部分感到有些自信。
有什么想法吗??
我正在尝试切换视图/将视图传递到另一个视图。
我有一个正在调用 kimono API 的应用程序,所有设置都带有超音速背景,看起来不错。我在 API 中有 1 个字符串和 2 个对象。我有一个页面使用名为 event:
的页面调用完整的事件列表{{ event.eventdescription }}
The Event#Index controller is:
angular
.module('event')
.controller("IndexController", function ($scope, Event, supersonic) {
$scope.events = null;
$scope.showSpinner = true;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
$scope.events = events;
$scope.showSpinner = false;
});
});
});
And all of that displays properly. The issue is when I click on one of those items shown which should go to the specific event I get nothing. And I'm sure I'm doing this wrong or don't understand enough about switching views. I've read many examples, but I'm not getting how it all goes together.
这是我的活动#show 页面。非常通用,此时只是尝试加载任何信息。
<div ng-controller="ShowController">
<super-navbar>
<super-navbar-title>
Show
</super-navbar-title>
</super-navbar>
<div class="padding">
{{ event.eventdescription }}
</div>
</div>
以及演出总监:
angular
.module('event')
.controller("ShowController", function ($scope, Event, supersonic) {
$scope.events = null;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
});
});
});
而且这总是 returns 空白页。当我查看日志时它说 Undefined.undefined 我不确定那是什么意思。
非常感谢任何对此的见解。在 appgyver 文档中,我看到了一个叫做的东西。
var view = new supersonic.ui.View("bananas#show");
supersonic.ui.layers.push(view);
但我不确定如何使用它? 任何见解表示赞赏。
所以,我更新了:
这是我正在处理的事件#index。
<div ng-controller="IndexController">
<super-navbar>
<super-navbar-title>
Event Index
</super-navbar-title>
</super-navbar>
<ul class="list" ng-hide="events.length == 0">
<super-navigate view-id="event#show" data-params-id="{{event.id}}" ng-repeat="event in events">
<li class="item item-icon-right">
<h2 ng-bind="event.EventTitles['text']"></h2>
<img ng-src="{{ event.HeadlineImages.src }}" width="100px" height="100px">
<p> {{ event.eventdescription }} </p>
<i class="icon super-ios7-arrow-right"></i>
</li>
</super-navigate>
</ul>
</div>
和索引控制器
angular
.module('event')
.controller("IndexController", function ($scope, Event, supersonic) {
$scope.events = null;
Event.all().whenChanged( function (events) {
$scope.$apply( function () {
$scope.events = events;
});
});
});
显示 html 页。
<div ng-controller="ShowController">
<super-navbar>
<super-navbar-title>
Show
</super-navbar-title>
</super-navbar>
<div class="padding">
<p>
{{event.eventdescription}}
</p>
</div>
</div>
ShowController
angular
.module('event')
.controller("ShowController", function ($scope, Event, supersonic) {
supersonic.ui.views.current.params.onValue( function (Event) {
$scope.events = event.id;
});
Event.find($scope.events).then( function (Event) {
$scope.$apply( function () {
$scope.event = Event;
});
});
});
我也更新了 structure.coffee
rootView:
location: "event#index"
preloads: [
{
id: "event#show"
}
{
id: "using-the-scanner"
location: "example#using-the-scanner"
}
]
感谢任何帮助。
您的 ShowController 中似乎没有设置数据。我之前评论过这个。我认为您需要使用 <super-navigate>
和 location
属性 和 data-params-id
或任何您想要的参数名称来传递事件的 ID。然后在您的 ShowController 中,您可以通过以下方式访问它:
supersonic.ui.views.current.params.onValue( function (values) {
// values.nameOfPropertyPassedInCouldBeEventId
$scope.id = values.id;
});
那么您也许可以像这样通过 id 访问事件:
Event.find($scope.id).then( function (theEvent) {
$scope.$apply( function () {
$scope.event = theEvent;
});
});
现在在您的视图中您有 {{ event.eventdescription }}
应该有一些数据。
还有一个关于视图何时可见的部分,这意味着每次您看到该视图页面时都会触发:
supersonic.ui.views.current.whenVisible( function () {
// your code for watching events
});
好吧,经过几个星期的努力让这个工作起来,虽然,我仍然没能让它工作......我想我终于有了这个......看起来这里最大的问题是使用 Kimono 和 AppGyver。 JSON 文件已在 Kimono 中更新,使用:
function transform(data) {
data.results.collection1 = data.results.collection1.map(function(o) {
o.eventdescription = {
text: o.eventdescription
}
return o;
});
return data;
}
这会清理作为 API 导出/传入 App Gyver 的 JSON 文件,以便所有部分都是对象。 (我知道,也许没什么大不了的,但我只是想让它尽可能干净)。让您了解在 Kimono 修改结果框中使用此脚本前后的情况 --> 之前:
"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "Lorem Ipsum"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "Lorem Ipsum"
},
"eventdescription":"Lorem Ipsum"
},
将 eventdescription 保留为字符串而不是对象,然后是 AFTER:
"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"eventdescription": {
"text": "TEXT"
},
因此,在 运行 之后进入 Kimono,您可以看到所有条目都是 "objects"。你会在 link 中的 apikey 之后使用 &kimmodify=1 因此:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimmodify=1
NEXT,正如 AppGyver 社区向我解释的那样,对于正在创建的 JSON / API 中的每个项目,几乎需要一个 "id" 种类能够使用 ShowController 在 show.html 上创建合理/可行的 url 字符串。
从索引转到特定条目视图时,应该创建类似于 /app/tier/showid=123456789
的内容。
(您可以通过 Mac 上的 Safari Web Inspector 和 IOS 模拟器在 AppGyver 中使用调试模式找到 URLs。或者浏览器使用 http://localhost:[some port number]/location/of/app
使用 Android 模拟器(推荐的 Genymotion)时。
因此,要做到这一点,在 Kimono 中使用 API 哈希添加 &kimhash=1 到 url 的末尾 APIKEY 之后但之前修改如下:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimhash=1&kimmodify=1
这会创建类似
的内容"EventTitles": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"HeadlineImages": {
"href": "http://",
"src": "http://.jpg",
"text": "TEXT"
},
"eventdescription": {
"text": "TEXT"
},
"hash":"1a2b3c4d5e6f7g8h9z"},
为每个条目创建随机 'indentifier'。
现在,这就是我现在被困的地方。 ...因为需要进来的 API URL 是:
https://www.kimonolabs.com/api/{indentifier}{apikey}&kimhash=1&kimmodify=1
当你在后端配置你的 API 时,我看不到要输入这个新的 &kimhash=1&kimmodify=1 的区域,它需要在 URL 的末尾调用格式正确且 ID 为 API 的代码,据我所知,没有这样做的参考资料。
http://docs.appgyver.com/supersonic/guides/data/other-data-providers/kimono-labs/
我觉得这是解决所有问题并最终能够启动并运行的倒数第二步。最后一个显然是重新访问将 id 拉入 ShowController,我对我是否能以某种方式弄清楚这最后一部分感到有些自信。
有什么想法吗??