我有一個包含三個選項卡的選項卡式界面的應用程序。當用戶對tab1執行某些操作時,它會動態地創建出現在第二個選項卡上的元素。問題是當我嘗試在我的javascript中動態創建該內容時,我得到的不能設置「null」屬性,我假設這是因爲第二個選項卡尚未加載到dom中。如果我先導航到第二個選項卡,然後回到第一個選項卡,它工作正常。我沒有真正使用它通常使用的方式。一切都在JavaScript中完成。我只是爲底層UI準備了一個準系統app.js。在應用程序啓動時將所有選項卡加載到DOM上(使用Ionic)
本質上,我只想在應用程序啓動時將所有三個選項卡加載到DOM中,以便可以從任何其他選項卡動態修改任何選項卡的內容。不知道如何做到這一點。這裏是我的app.js是什麼樣子:
VAR對myApp = angular.module( '啓動',[ '離子', 'ngCordova'])
myApp.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}
$cordovaStatusbar.overlaysWebView(true)
$cordovaStatusbar.styleHex('#4a87ee')
$ionicConfigProvider.views.forwardCache(true);
});
});
myApp.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('tabs', {
url: "/tab",
abstract: true,
templateUrl: "templates/tabs.html"
})
.state('tabs.home', {
url: "/home",
views: {
'home-tab': {
templateUrl: "templates/home.html"
}
}
})
.state('tabs.favorites', {
url: "/favorites",
views: {
'favorites-tab': {
template: "templates/favorites.html",
controller: 'AppCtrl'
}
}
})
.state('tabs.settings', {
url: "/settings",
views: {
'settings-tab': {
templateUrl: "templates/settings.html"
}
}
});
$urlRouterProvider.otherwise("/tab/home");
})
myApp.controller('AppCtrl', function($scope) {
})
我的基本的應用程序結構/ HTML看起來像這樣的:
<ion-nav-bar class="bar-positive"></ion-nav-bar>
<ion-nav-view></ion-nav-view>
<script id="templates/tabs.html" type="text/ng-template">
<ion-tabs class="tabs-positive tabs-icon-only">
<ion-tab title="Videos" icon-on="ion-ios-home" icon-off="ion-ios-home-outline" href="#/tab/home">
<ion-nav-view name="home-tab"></ion-nav-view>
</ion-tab>
<ion-tab title="Favorites" icon-on="ion-ios-star" icon-off="ion-ios-star-outline" href="#/tab/favorites">
<ion-nav-view name="favorites-tab"></ion-nav-view>
</ion-tab>
<ion-tab title="Settings" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline" href="#/tab/settings">
<ion-nav-view name="settings-tab"></ion-nav-view>
</ion-tab>
</ion-tabs>
</script>
<!-- **************************** HOME TAB **************************** -->
<script id="templates/home.html" type="text/ng-template">
<ion-view view-title="Lmao!Tube">
<ion-content has-bouncing="true" overflow-scroll="true" class="iframe-wrapper">
<div id="videoList"> </div>
</ion-content>
</ion-view>
</script>
<!-- **************************** FAVORITES TAB **************************** -->
<script id="templates/favorites.html" type="text/ng-template">
<ion-view view-title="Favorites" >
<ion-content has-bouncing="true" overflow-scroll="true" class="iframe-wrapper">
<div id="favoriteList"></div>
</ion-content>
</ion-view>
</script>
<!-- **************************** SETTINGS TAB **************************** -->
<script id="templates/settings.html" type="text/ng-template">
<ion-view view-title="Settings">
<ion-content>
</ion-content>
</ion-view>
</script>
是的,我不認爲這就是它通常使用的方式。每個標籤內容結構的變化應該可以保存爲服務中的數據,然後通過您的控制器訪問,以根據他們以前的操作動態顯示內容。例如,他們點擊home,家庭控制器將數據保存到「GlobalService」,您將GlobalService傳遞到您的收藏夾控制器中,並根據GlobalService中的值更改該選項卡的內容。那有意義嗎?一旦我更好地瞭解你在做什麼,我會給出答案。 – DataHerder
恩,不是。我根本不太熟悉Ionic。我所有的應用邏輯都是javascript。我只是在使用Ionic,因爲它是我所需的所有UI組件都可以找到的唯一框架,而無需跳過這些環節並繞過我的$ $$來到我的胳膊肘。 –
糟糕...基本上我在主屏幕上加載了YouTube視頻。有一個選項/按鈕可將視頻添加到收藏夾。當用戶點擊添加到收藏夾時,它會進入收藏夾陣列,並將視頻加載到收藏夾選項卡中。通過邏輯工作正常,除了我必須先導航到第二個選項卡。 –