如何从ng-repeat创建链接并将值传递到另一个页面? Angularjs

时间:2016-07-14 00:08:42

标签: angularjs onsen-ui

一旦有人按下链接并将其显示在另一个页面中,我就会尝试发送数据。我环顾四周,但我尝试的一切并不能让我做我需要的事情。

这是我的HTML。

第1页                                                                                                手动de Toma de Muestras                    

    <ons-list class="timeline" modifier="inset" ng-controller="namesCtrl">
      <ons-list-item class="timeline-li" modifier="tappable" ng-repeat="x in names">

        <ons-row onclick="myNavigator.pushPage('muestra.html', { animation : 'slide' } )">


          <ons-col>
            <div class="timeline-date">{{ x.tat }}</div>
            <div class="timline-from">
              <span class="timeline-name">{{ x.test }}</span>
              <span class="timeline-id">{{ x.dept }}</span>
            </div>
            <div class="timeline-message">
             <strong>Code:</strong>{{ x.code }}<br>
             <strong>CPT Code:</strong> {{ x.cptcode }}
            </div>
          </ons-col>
        </ons-row>

      </ons-list-item>
    </ons-list>

这是控制器

// controller.js
(function() {
var app = angular.module('myApp', ['onsen']);


//Getting Json Data controller
app.controller('namesCtrl', function($scope, $http) {
 $http.get("json.php")
.then(function (response) {$scope.names = response.data.doctores;});
});


//Sliding menu controller, swiping management
app.controller('SlidingMenuController', function($scope) {

    $scope.checkSlidingMenuStatus = function() {

        $scope.slidingMenu.on('postclose', function() {
            $scope.slidingMenu.setSwipeable(false);
        });
        $scope.slidingMenu.on('postopen', function() {
            $scope.slidingMenu.setSwipeable(true);
        });
    };

    $scope.checkSlidingMenuStatus();
});

})();

我需要在点击时将{{x.tat}} {{x.test}}等发送到另一个页面。我看到很多东西非常相似,但没有这样的。我试着在

中发送它
$scope.myNavigator.pushPage("link/to/some/other/page.html", {param1: {{x.tat}}, param2: {{x.test}}});

但不起作用。我可以得到任何指示吗?

2 个答案:

答案 0 :(得分:1)

正如Jesse所提到的,为了检索信息,您需要的代码是:

myNavigator.getCurrentPage().options

但对我来说,似乎你可能在调用pushPage本身时遇到问题。确保您正在编写的内容产生正确的javascript。

<ons-row ng-click="myNavigator.pushPage('somepage.html', {param1: x.tat, param2: x.test})">

onclickng-click之间存在细微差别 - 在ng-click中您正在角度上下文中执行所有操作,而在onclick中它只有js,这意味着您不会#39; t可以访问范围 - 您可以像{{ x }}那样欺骗它,但如果您不小心,这可能会导致一些问题。

在您的示例代码中,x.tatx.test是字符串 - "value of tat""value of string",那么您会得到类似

的内容
$scope.myNavigator.pushPage("somepage.html", {param1: value of tat, param2: value of test});

不会引用字符串,您会收到错误消息。我的猜测是,这就是你的情况。添加引号也不是很好,因为您可能决定将x.test转换为数字,然后您需要删除它们等。

作为一般规则,您应该避免额外的{{ }}以避免麻烦。

// Good
<ons-row ng-click="myNavigator.pushPage('somepage.html', {param1: x.tat, param2: x.test})">

// Bad
<ons-row onclick="myNavigator.pushPage('somepage.html', {param1: '{{x.tat}}', param2: '{{x.test}}'})">

此外,如果我说的是真的,那意味着您可能在控制台中出现错误。您可以使用right clickinspect elementconsole进行检查。同样使用检查器(无需单击控制台),您可以查看DOM的呈现方式,并且可以看到角度完成后的最终代码。

这里的Demo可能更容易理解。没有ng-repeat,但这不是造成问题的原因,所以我认为你应该能够管理。

如果您有什么不明白或者不知道如何继续发表评论,我会回答你:)

答案 1 :(得分:0)

我认为您还希望从您导航的网页中提供一个代码段,描述您是如何尝试阅读该数据的。

我自己没有使用过onsen-ui,但基于the docs,您似乎需要使用myNavigator.getCurrentPage()来访问您附加到options的任何自定义键1}}对象。